AMDP3 Final Project Submission.
Application | ||
.htaccess | ||
autoload.php | ||
config.php | ||
index.php | ||
README.md | ||
routes.php |
Metaforums
An online web-based discussion forum application
How to set up
- Make sure mod_rewrite is enabled on Apache.
- Create a MySQL / MariaDB database, and import Metaforums' schema (
schema.sql
) into the database. - Modify backend/config.php and adjust the configuration as needed.
- Point the browser to
localhost
Project Structure
- index.php The main handler of backend functions. Handles routing, loading of Application services, and response handling.
- Application/
Application contains classes that are the core of the application itself
- Assets/ Assets contains buildable assets, for example source CSS.
- Controllers/ Controllers contain controllers that return HTTP responses
- Foundations/
Foundations are helper classes for various functions, such as an SQL query builder, and base model implementation;
- SQLHelper Contains SQL escaping facilities.
- QueryBuilder The SQL query builder.
- Model The base model implementation. Contains common code for all models.
- HTTP HTTP contains a number of abstractions for HTTP, such as Request class.
- Models/ Models contain database models.
- Services/
Services contains a number of service classes for common functionality such as Database and Session.
- Authentication Provide auth related services.
- Config Loads configuration and provides a facility to access the contents.
- Database A service that centralizes database access.
- Email A service for sending email.
- ServiceContainer A service container that ensures every service is loaded once.
- Session A service that contains centralized session management.
- View Provides view rendering facilities
- Static/ Static contains static files served directly by the application. For example, this contains built CSS.
- Views/ Views contains all views used by the application
Software Stack
The software is tested on the Apache server and PHP 7.3 on Arch Linux.
Backend
The database used is MariaDB 10.4.8
External frontend libraries used
jQuery
jQuery is a feature-rich JavaScript library.
Here, jQuery is mainly used for its AJAX functionality.
CSS Frameworks and Styles used
Tailwind
Tailwind is a utility-first CSS framework for rapidly building custom designs