/ffq

"fast fast quick": personal versioned wiki wiki web

Primary LanguagePHPOtherNOASSERTION

"fast fast quick": personal versioned wiki web


== URLs 

URL patterns are made to be fairly easy to type,
for power users to be able to quickly perform any of the operations.
In this way the address acts as a simplified command language.

Instead of the usual "RESTful" urls, we prefix little "sigils".
This might make the urls less easy to remember or see what's going on if you're unfamiliar,
but I think it might be refreshingly different.

Here is the planned URL structure, where implemented segments
are marked with an asterisk.

*normal pages  /<page-name>
*by version    /<page-name>~<version-number>
*user pages    /~<user-name>(/<pagename>)

*listing       /<blob>/
*list all      //
*user pages    /~/

*editing       /:<page-name>
*deleting      /!<page-name>
*revisions     /*<page-name>
reverting      /@<page-name>~<version-number>
moving         /@<page-name>@<new-name>

*login         /=<redirect-url>
*logout        /-
icing          /!!<page-name|~user-name>
signup         /+
settings       /:

stats/admin    /::
    

Internally, pages are stores in a simple data structure.

pages  
pages/v

When /test-page is accessed, we will look for a soft link under pages/test-page.
This link should point to the latest revision, which may look like pages/v/test-page~1.
If no page is found in this way a 404 Not Found is returned.
We know only about ascii letters, others are replaced with `-`, and for directory structures, we use "." internally to represent hierarchy, and "/" externally.

versions are iterated up from 0  

user pages are kept as pages/~username.pagename  
nothing is designed to keep someone else from editing a user's page,  
or from creating a page for a nonexistent user.
user pages are simply named like this for convention

locks or "ices" are kept in pages/i/<page-name> as empty files
or contain a list of allowed users and allow the page to be locked


== Access, editing

user names are kept in a file called passwd  
before being allowed to edit, users are prompted for a password  

alternatively, if a file called "private" exists, access is disallowed until the user authenticates

edit pages are just a textarea and submit button  
admins are users with a score of 1000 or more and can edit locked pages or create locks


== files

keep a header in each file that summarizes the modification time, user, title, score of modification, and up/down voters


== users

get a profile of their own that stores some personal data,
and their score, as well as all changes and updates they have made