2019-11-17 19:22:25 +00:00
|
|
|
# Metaforums
|
|
|
|
An online web-based discussion forum application
|
|
|
|
|
2019-11-18 13:33:45 +00:00
|
|
|
|
|
|
|
## How to set up
|
|
|
|
|
|
|
|
1. Make sure mod_rewrite is enabled on Apache.
|
|
|
|
2. Create a MySQL / MariaDB database, and import Metaforums' schema (`schema.sql`) into the database.
|
|
|
|
3. Modify backend/config.php and adjust the configuration as needed.
|
|
|
|
4. Point the browser to `localhost`
|
|
|
|
|
2019-11-17 19:22:25 +00:00
|
|
|
## Project Structure
|
2019-11-18 13:33:45 +00:00
|
|
|
|
2019-11-17 19:22:25 +00:00
|
|
|
- index.php
|
2019-11-18 13:33:45 +00:00
|
|
|
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
|
|
|
|
|
2019-11-17 19:22:25 +00:00
|
|
|
## 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.
|
|
|
|
|
|
|
|
[Project Website](https://jquery.com)
|
|
|
|
|
|
|
|
## CSS Frameworks and Styles used
|
|
|
|
|
|
|
|
### Tailwind
|
|
|
|
|
|
|
|
Tailwind is a utility-first CSS framework for rapidly building custom designs
|
|
|
|
|
|
|
|
[Project Website](https://tailwindcss.com)
|
|
|
|
|
|
|
|
## Additional Development
|