Tina4 - This is not a framework
Overview
Tina4 is the result and culmination of more than 15 years of working with scripted languages where strong typing and coding practices have been left entirely to each developer who writes the code.
Whilst not being a framework it is a structural paradigm for developers to follow in writing their code, keeping the language the hero and the code maintainable.
Quick Start
Use one of the following docker methods to try out Tina4 without having to install anything to your system
### Windows
docker run -v %cd%:/app tina4stack/python:latest poetry init
docker run -v %cd%:/app tina4stack/python:latest poetry add tina4-python
echo import tina4_python > app.py
docker run -v %cd%:/app -p"7145:7145" tina4stack/python:latest python -u app.py 0.0.0.0:7145
### MacOS & Linux
docker run -v $(pwd):/app tina4stack/python:latest poetry init
docker run -v $(pwd):/app tina4stack/python:latest poetry add tina4-python
echo import tina4_python > app.py
docker run -v $(pwd):/app -p"7145:7145" tina4stack/python:latest python -u app.py 0.0.0.0:7145
### Windows
docker run -v %cd%:/app tina4stack/php:latest composer require tina4stack/tina4php
docker run -v %cd%:/app tina4stack/php:latest composer exec tina4 initialize:run
docker run -v %cd%:/app -p7145:7145 tina4stack/php:latest composer start
### MacOS & Linux
docker run -v $(pwd):/app tina4stack/php:latest composer require tina4stack/tina4php
docker run -v $(pwd):/app tina4stack/php:latest composer exec tina4 initialize:run
docker run -v $(pwd):/app -p7145:7145 tina4stack/php:latest composer start
Philosophy
As we work out solutions for various languages where possible we have included libraries which add low impact to the code. To this end our "framework" attempts to use and follow these basic principles.
Principle of an efficient coding environment
- Green coding - the best code is no code
- Use of IDE vs Text Editors - good tools are essential for good code
- Use of a source code repository - the ability to track code changes and work effictively in a team
- Package Management - write modules and libraries where possible for reuse
- Light Database Abstractions - most database abstractions are bloated and overengineered
- Database Migrations - database changes are treated as code
- Templated HTML - promotes reuse and good html structures
- Localization - support for different languages
- Environment variables - Use of .env files to declare global constants
- Inline Testing - tests live where the code is written
- Inline Documentation - documentation is done whilst coding
- Built in webserver - development environment replications the production experience
- Structured code - sustainable code through defined structure
- The language is the hero - promote using the language not the framework!
Danger
Tina4 is heavily opinionated, whilst it does not define how you should use it with a language, if you don't understand the paradigm you'd be best off using another framework.
Features
Here is a complete list of features
- ASGI Compliant Webserver
- Session & Cookie Handling
- Light weight database abstractions
- Logical Folder Structure
- Templating with Jinja2/Twig
- Light weight ORM
- Localization
- Open API
- JWT Security
- SCSS Compilation
- Color Coded Debugging
- Comprehensive Logging
- Zero Error Tolerance
- Threaded Services
- Built in Caching
- Queues
- API Abstraction
- Separation of Concern
- Full Docker Compatibility
Phusion Passenger ® & Virtualmin
Tina4 is written to run seemlessly with Phusion Passenger & Virtualmin, you can read more about this under advanced topics when it comes to deployment strategies and architecture.
Sponsors
Without our sponsors working on open source projects would not be possible
Quotes from our users
- if python frameworks are bread, tina4_python is sliced bread
- Tina4php, the framework that gets out of your way so you can just code