I have posted the articles explaining:
The next step will be to discuss the AJAX-based interface, which can already be seen (at least in part) on the demo website by creating yourself a new account:
http://jitbrain.nicollet.net
JITBrain currently contains 2224 lines of PHP code, and not all of them have been discussed yet. I will start counting the Javascript soon, as well.
25 config/db.php
54 config/domain.php
17 config/error.php
31 controllers/ajax-post.php
19 controllers/confirm.php
52 controllers/do-login.php
107 controllers/do-reset-password.php
82 controllers/do-signup.php
70 controllers/files.php
24 controllers/index.php
17 controllers/login.php
27 controllers/reset-password.php
83 models/authentication.php
40 models/group.php
98 models/groupusers.php
170 models/item.php
292 models/itemrevision.php
34 models/user.php
39 objects/html.php
77 objects/lazy.php
21 utils/array.php
154 utils/db.php
67 utils/error.php
31 utils/item.php
10 utils/js.php
9 utils/localization.php
53 utils/pervasive.php
27 utils/redirect.php
88 utils/request.php
40 utils/session.php
27 views/confirm.php
24 views/itemlist.php
69 views/loginpage.php
29 views/newitemfield.php
18 views/page404.php
40 views/plainpage.php
101 views/resetpassword.php
58 views/twocolform.php
2224 total
Lo and behold: all the modules available in JITBrain so far, and their interdependencies:

Click to enlarge
These modules have been automatically extracted from the source code by grepping for “(.*)::” and “new (.*)”, then the class-file associations have been determined using the autoloader code, and the result was fed to dot (from Graphviz) to generate the graph.
The login page is functional and skinned! You can now login, sign up, retrieve your password, and if you were trying to do something that requires an authentication, you will be able to resume that once you authenticate. The corresponding articles have been added to the ongoing series: Delayed Requests, Password Recovery and Stylesheets.
The next step is to design the core of the JITBrain application: the form that lets the user add an issue to the tracker. It has to be carefully balanced for optimal usability, so expect a lot of tweaking and AJAX programming (and an introduction to jQuery).
So far, JITBrain is 1286 lines of PHP (not counting the CSS, obviously):
20 config/db.php
54 config/domain.php
17 config/error.php
19 controllers/confirm.php
50 controllers/do-login.php
99 controllers/do-reset-password.php
78 controllers/do-signup.php
43 controllers/files.php
3 controllers/index.php
17 controllers/login.php
25 controllers/reset-password.php
83 models/authentication.php
77 objects/lazy.php
115 utils/db.php
67 utils/error.php
52 utils/pervasive.php
27 utils/redirect.php
88 utils/request.php
40 utils/session.php
27 views/confirm.php
68 views/loginpage.php
17 views/page404.php
37 views/plainpage.php
105 views/resetpassword.php
58 views/twocolform.php
1286 total
Enjoy your read!
Posted a new article: Authentication Model. Also made some retroactive modifications to take into account new details about DomainConfig::Url.
The next steps are:
- Handling the interruption in the user action created by the login requirements, so that the user activity is resumed after the process.
- Resetting the user password.
- Applying some lipstick to the login page to make it look better, and include some JavaScript.
JITBrain contains 843 lines of PHP so far.
20 config/db.php
48 config/domain.php
17 config/error.php
45 controllers/do-login.php
66 controllers/do-signup.php
3 controllers/index.php
14 controllers/login.php
70 models/authentication.php
77 objects/lazy.php
115 utils/db.php
67 utils/error.php
52 utils/pervasive.php
27 utils/redirect.php
40 utils/request.php
40 utils/session.php
67 views/loginpage.php
17 views/plainpage.php
58 views/twocolform.php
843 total
Some of you may have wondered, what is this secret project he is working on?
The project is called JITBrain. In itself, it’s nothing quite groundbreaking, merely an issue tracking platform that services two categories of users:
- Individuals that have a lot to do but never seem to manage it. These are helped by features such as extremely simple todo-list manipulation, a search engine for looking at previous tasks and retrieving important information, and helpful statistics.
- Teams that must collaborate on projects. These are helped by features such as issue tracking, simple workflows, attached links and files, planning poker, reporting charts, and motivational gizmos.
The unusual thing about the project is the development method: it builds upon my earlier ramblings on snippet-oriented development (developing quality software by actively thinking of the people who will read and reuse the code) to actually become an advanced tutorial in itself. This brings yet another benefit, since the code is not only designed in short bursts of concisely explained functionality, but a complete documentation and log is being written along with it.
As such, it has the additional purpose of serving as a simple reference for “classic mistakes” both in technical and functional areas in the development of a website.
The tutorial advances along with the development of the system, which means you can see the tutorial or look at the website.
Recent Comments