Thoth is a web platform that supports the workflow of a Systematic Literature Review (SLR), including project organization, extraction activities, and progress tracking.
This repository is a revived and refactored version of the original Thoth legacy codebase, carried out as a learning experience. It modernizes the front-end stack and improves the internal architecture while preserving the original feature set.
For production usage and the latest features, visit Thoth 2.0.
The original codebase used plain PHP views, monolithic controllers, and static Bootstrap dist files copied directly into the project. This revived version introduces the following changes:
All views were migrated from inline PHP to Twig. This enforces a clean separation between presentation and logic, makes templates more readable, and enables template inheritance through layouts and partials.
Several large, multi-responsibility controllers were broken down into smaller, focused controllers. This makes the routing and business logic easier to follow, test, and extend.
Static vendor JS and CSS files were removed from the repository. All front-end dependencies are now declared in package.json and installed via npm. This includes:
- Bootstrap 5 (via npm, compiled from source)
- DataTables with Bootstrap 5 integration
- Highcharts
- Quill rich text editor
- Select2
- SweetAlert2
- JSZip and pdfmake
Instead of loading pre-compiled Bootstrap CSS from a dist/ folder, the project now imports Bootstrap via SCSS. Custom styles live in assets/scss/ and are compiled into a single assets/css/theme.css file using the sass CLI.
To rebuild styles:
npm run build-cssTo watch for changes during development:
npm run watch-scssThe project was fully Dockerized using Docker Compose, making local setup reproducible without any manual PHP/Apache configuration. The PHP runtime was upgraded from the original PHP 5.x to PHP 8.1 (php:8.1-apache), bringing modern language features, improved performance, and continued security support.
Example of the Thoth dashboard and progress tracking interface.
| Layer | Technology |
|---|---|
| Framework | CodeIgniter 3 (PHP 8.1) |
| Templating | Twig 3 |
| Styling | Bootstrap 5 · SCSS · Sass CLI |
| Front-end libs | DataTables · Highcharts · Quill · Select2 · SweetAlert2 |
| Package manager | npm (front-end) · Composer (PHP) |
| Database | MySQL |
| Runtime | Docker / Docker Compose (php:8.1-apache) |
git clone https://github.com/auri-gabriel/thoth.git
cd thothcomposer installnpm installnpm run build-csscp application/config/database_sample.php application/config/database.php
cp application/config/config_sample.php application/config/config.phpOptionally edit these files to match your local database settings.
docker compose up --buildApplication URL: http://localhost:8080
docker exec -i <mysql_container_name> mysql -uthoth -pthoth thoth < docs/database/thoth.sqlReplace <mysql_container_name> with your actual container name (for example, thoth-db-1).
If you get session path/permission errors:
mkdir -p application/cache/sessions
chmod 777 application/cache/sessionsCheck the database seed data (or ask your admin) for available default users.
docker compose down -vXdebug is installed in the web container and is disabled by default.
Start the stack with debug mode enabled:
XDEBUG_MODE=debug,develop docker compose up --buildThen set a breakpoint in VS Code and start listening on port 9003.
Because xdebug.start_with_request=trigger, only requests with a trigger will start debugging. Use one of these:
Cookie: XDEBUG_TRIGGER=1
Query string: ?XDEBUG_TRIGGER=1
For coverage commands, use:
XDEBUG_MODE=coverage docker compose run --rm web composer test:coverage- If login fails, confirm the SQL import was executed successfully.
- If sessions do not persist, verify
application/cache/sessionsexists and is writable. - If containers fail to start, run
docker compose logsto inspect service errors. - If styles look broken, make sure you ran
npm run build-cssafter installing dependencies.
Contributions are welcome. See contributing.md for contribution guidelines.
This project is licensed under the MIT License. See license.txt for details.
For questions or support, open an issue in this repository: auri-gabriel/thoth.
