Psweb

From ProgClub
Jump to: navigation, search

Psweb is the personalserver.com software. That's the software that provides the personalserver.com website. For other projects see projects.

Status

Under way. Not released yet, there's stuff TODO.

Administration

Contributors

Members who have contributed to this project. Newest on top.

All contributors have agreed to the terms of the Contributor License Agreement. This excludes any upstream contributors who tend to have different administrative frameworks.

Copyright

Copyright 2013, Contributors.

License

Licensed under the New BSD license.

Resources

Downloads

There are no downloads for this project.

Source code

The repository can be browsed online:

https://www.progclub.org/pcrepo/psweb

The latest stable released version of the code is available from:

https://www.progclub.org/svn/pcrepo/psweb/tags/latest

Or if you want the latest version for development purposes:

svn://www.progclub.org/svn/pcrepo/psweb/trunk

Links

Specifications

Naming conventions

PHP

Functions are 'lower_case'.

Classes are 'UpperCase'.

Defined constants are 'ALL_CAPS'.

Instance class methods and variables are '$object->lower_case'.

Static class methods are 'Class::UpperCase'.

Avoid using plurals. Rather than 'get_items' say 'get_item_list' or 'get_item_array'.

Function calls are like( $this ), function definitions are like( $this ) and array indexes are $like[ 'this' ] with spaces before and after the parameters.

SQL

Table names are singular, e.g. 'user' not 'users'.

Field names and table names are 'lower_case'.

The table name is not included in the field name. I.e. 'table.id' not 'table.table_id'.

Don't need to enforce foreign key constraints.

Functional specification

The functional specification describes what the project does.

  • Home (links to all features of the site)
  • Motivation (why personal servers?)
  • Guide
    • Configuration Wizard (questionnaire that generates config files)
    • Knowledge Base (articles about how to do specific things)
  • Store
    • Support Tickets (pay for help with your configuration)
    • Hosting (lease a managed personal server for $50/mo)
  • Community
    • News/Newsletter (email list and list archives)
    • Forums (self-help at personalserver.com)
    • Affiliates (links to hardware/VPS/software vendors)
  • Contact (how to get in touch)
  • Accounts (user management)
    • Create account
    • Edit account
    • Login
    • Logout
    • Forgot password

Technical specification

The technical specification describes how the project works.

Psweb uses a front controller /app/web/controller.php. The front controller can load 'resources' such as CSS, JavaScript and image files. The front controller can process AJAX requests or 'form' requests. AJAX requests return JSON and 'form' requests HTTP redirect. To add AJAX business logic edit /app/src/process/ajax.php and add a new action. To add HTML form business logic edit /app/src/process/form.php and add a new action.

Session state is managed by the Session object which can be accessed by calling session(). Session state is stored in the database and the PHP session management facilities aren't used (this is so that we can scale by adding web-servers). The database access code is direct PDO, no database helpers. To get the active database call db().

The version number is kept in /app/src/bootstrap.php. The version number needs to be incremented if any changes are made to any of the application's resource files (scripts, styles, etc.).

Notes

Notes for implementers

If you are interested in incorporating this software into your project, here's what you need to know:

The /app/dat/phpbrowscap/cache directory needs to grant write access to the user that the web-server runs as (www-data on Apache and IUSR_MACHINE on IIS).

Notes for developers

If you're looking to set up a development environment for this project here's what you need to know:

Tasks

TODO

Things to do, in rough order of priority:

  • Design database
  • Home (links to all features of the site)
  • Motivation (why personal servers?)
  • Guide
    • Configuration Wizard (questionnaire that generates config files)
    • Knowledge Base (articles about how to do specific things)
  • Store
    • Support Tickets (pay for help with your configuration)
    • Hosting (lease a managed personal server for $50/mo)
  • Community
    • News/Newsletter (email list and list archives)
    • Forums (self-help at personalserver.com)
    • Affiliates (links to hardware/VPS/software vendors)
  • Contact (how to get in touch)
  • Accounts (user management)
    • Create account
    • Edit account
    • Login
    • Logout
    • Forgot password

Done

Stuff that's done. Latest stuff on top.

  • BH 2013-08-18: Database design, template resources, contact, knowledge base, support tickets, user login, forums, accounts management
  • BH 2013-08-04: Updated resources and template.
  • JE 2013-08-04: Flesh out the technical design.
  • JE 2013-07-31: Create the project in svn.
  • JE 2013-07-31: Created project page.