Jump to content

PetSite Project Development Concept


Recommended Posts

Architecture So this is the initial development concept document for the project. It outlines the technologies that will hopefully be used and general concepts of how things will be tied together. I am writing this while mobile (sitting in the car while my infant snoozes in the back seat), so there might be rough areas. This document will evolve and I would love developers to weigh in as well as anyone else.

Technologies Considerations

When looking at what do build this in, I wanted to keep several things in mind. These things are:

  • Easy for non-programmer to adapt?
  • Easy to setup and install?
  • Easy to extend?

With those three things in mind I actually shied away from Laravel as the framework of choice due to the fact that although it is great for developers, it has a steep curve to non-developers and also drops some extensibility to provide a convention. It's a great framework for developers but I think it is limiting in this case. We will however be using Eloquent.

The rest of the system will be making use of Symfony Components, of which I will have a list shortly. For those uninitiated, these components are used in the majority of software already, even Laravel. We will be using HttpKernal, HttpFoundation, Routing, Templating, Forms, CSSSelector, and EventDispatcher for sure.

DB support will be provided by Eloquent. This is to keep our DB layer fluent and it is a solid library for this.

Templating will be provided by Twig for ease of non-developer understanding. In addition to templates. We will allow injections after compilation to allow extensions, see architecture concept section or more.

Routing and Controllers are part of the Symfony Components and Form processing as well so those are provided relatively free.

Architecture Concepts

Now, the fun stuff. The system must be designed to be extremely flexible so that we can have a flourishing ecosystem of additions to the marketplace.

To achieve that we will be using a dual extension type of system, with two forms of "extensions". One type being "applications" which are full blown systems (i.e forums, explore, battle, etc) which have their own controllers, templates, models, etc. The other one will be called "plugins" which are smaller extensions which modify or add to existing behavior (i.e provide a new item type)

To keep things stable, no non-developer should ever edit a template directly. With proper css this isn't necessary. Once a template is compiled, we will allow hooks that can modify templates to add, modify, remove HTML structures through Symfony's CSSSelector Compinent. This will allow the UI to be modifiable without it being "accidentally" broken since plugins and applications should be tested before being released.

Application and Plugins are packaged in .tar archives and installed through the admin interface. They contain a set of files that allow us to modify database, including versioning.


I will flesh out more as time goes on, however this is open to discussion.

Link to comment
Share on other sites

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...