=== Introduction === The WikkaWiki core communicates with the following: - Visitor - Storage backend ===Visitor=== Available interactions are divided in input and output. The visitor/user, by default, should be able to upload and download Files. The visitor/user, by default, should be able to sent and receive Cookies. The visitor/user sends Requests (URLs exist always) as input. The visitor/user can accept (X)HTML, RSS/Atom, JSON. ===Storage=== Available interactions with the storage system are simple. The core asks for some data and the storage system is responsible for retrieving them. The interesting part is how the whole "architecture" of the process, which stems directly from the "things" we need to have the data for the core to operate and emit the required results. The "things" the core will need from the storage are divided into building blocks and relationships. The building blocks are defined as [block name|data columns]: - **Users**: id, name, email, time, last_seen, comments, theme - **Groups**: id, name, description - **Pages**: id, name, body, time - **Comments**: id, body, time - **Categories**: id, name, description - **Revisions**: id, name, body, time - **Permissions**: id, action, permission The relationships are: - **Users to Groups**: user_id, group_id - **Pages to Categories**: page_id, category_id - **Revisions to Pages**: revision_id, page_id - **Comments to Users**: comment_id, user_id - **Permissions to Categories**: permission_id, category_id - **Permissions to Groups**: permission_id, group_id ===Core Program Flow=== Sketch skeleton for Core Actions on user visit. This can and should obviously go into much more detail. 1) **Setup running environment** 1) Get Program Components 1) Get Configuration 1) Get Storage 1) **User Authentication** 1) Retrieve Cookie 1) Setup Session 1) Get User from storage 1) Validate User 1) Create User Object 1) Recreate Sesion 1) **Identify Request** 1) Analyze URL 1) Get User Requirements (eg: which page ? / how to show that page ?) 1) Get controlling body of code (eg: handler, action commonly known as controller) 1) Retrieve Data from Storage 1) Perform operations on Data 1) **Send Output** ---- CategoryDevelopmentSuggestions