Homepage: http://neamlabs.com/dna-project-base/
An extremely biased PHP-oriented* Docker+LEMP-based Project Base that allows rapid generation of deployable, testable and maintainable custom applications for enrichment and publishing of user-generated data, which in turn are made available for consumption by end user frontends through a RESTful API.
It's main focus is to enable automation in as many aspects of the development process as viable, so that the developers' energy is focused on custom business logic (the "DNA").
*Since the architecture is Docker-centric, micro-services within the project can be written in any server-side language. Most extensions and boilerplate for code-reuse however are currently written in PHP, heavily oriented around the Yii Framework.
DNA Project Base should assist in:
- Providing a useful Content and User Management UI with publishing/authoring workflows
- Providing a useful RESTful API (for end user frontends and machine-machine communication)
- Quickly and properly adapting to changes in the databases, metadata and configuration
- Testing the above applications
- Deploying the above applications (to a Docker container platform)
- Monitoring deployed projects
You need to maintain the following in your DNA Project Base projects (the project's DNA):
- An RDBMS database schema (the Data Model)
- Application-specific metadata and configuration (Generated by Codegeneration.IO)
- Set up the DNA-driven project structure and install dependencies
- Add your SQL as your project's first data profile
- Generate your content model metadata JSON by using Codegeneration.IO
- Generate the models, the RESTful API controllers and Angular frontend CRUD by using DNA Code Generator
- Test your application locally
- Deploy your frontend to Amazon S3
- Deploy your backend to Tutum
- Set up monitoring for your deployment (logs, server health, uptime)
- Set up automated builds and continuous integration (CI)
A certain directory structure and file contents / conventions are imposed in order to facilitate a high level of code re-use between projects.
See the full documentation here: ./docs/anatomy.md