I’ve decided that my personal project for the next few months is going to involve developing an intranet website for the house. I purchased a Buffalo WZR-HP-G300NH router a few months ago and I’ve been lazily configuring it to work correctly. DD-WRT is installed and set up, and I purchased a 2TB WD USB drive to hook up to it as well. After following the instructions I found on this blog I now have access to optware packages. So far Samba is running and I have a network shared drive for all computers set up on the router. I’ll mess with that more later, though. lighttpd is running as well, along with php and mysql server. All three need some optimizations so they don’t use as much of the router’s RAM, but everything is working pretty well.
The next step is to start the research into developing a modular personal intranet web page for the internal network. I want it to be modular so that I can add features on later as I think of them and this will give me the opportunity to think about a plug-in architecture. This will also be an opportunity to refresh those principles for creating and normalizing databases from the class I took on it over a year ago. I’ll also get a chance to play with php, which is a language I’ve toyed with for over ten years now but I’ve never really sat down to learn and understand.
So the first step that I’ve tasked myself on is learning a new distributed version control program. Git will work for this, and it’s something I’ve been watching for a while. I’d like to get a php page set up to view the repository contents and comments, and I’d also like to have something to submit trouble tickets so I can keep track of what I have to do and what isn’t working correctly.
The step after that will be to research some common best practices and design patterns for php. I’ll toy around with them for a bit until I come up with some ideas that might work. Once this learning spike is over with, I’ll start working on database design based on the user requirements I’ve already written for this project. This will start to translate into designing the classes and interfaces for the project.
I believe the Model-View-Controller (MVC) design pattern will work very well in this project. It will also allow me to focus more on the php portion of development, and then I can switch to JavaScript/jQuery, HTML, and CSS for the front end client view. It should be fun.
So for the rest of the night I’ll focus on researching git, what solutions exist already for the repository web page and project management tools I want, and I’ll see where I go from there.