amdp3-metaforums/README.md

155 lines
4.5 KiB
Markdown

# Metaforums
An online web-based discussion forum application
## 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 config.php and adjust the configuration as needed.
4. Put all project files in the DocumentRoot (this application cannot be in a subfolder)
5. Point the browser to `localhost` or wherever the application is located.
## Sample database data
### Users
1. Username: Administrator
Password: yuikaadmin
Role: Site Admin
2. Username: YuikaMitsumine
Password: producertan
Role: Idolmaster Shiny Colors Moderator
3. Username: AsahiSerizawa
Password: asahizzu
Role: Idolmaster Shiny Colors Moderator
4. Username: YurikoNanao
Password: toumeinaprologue
Role: Idolmaster Million Live Moderator
5. Username: JunnaHoshimi
Password: shakespeare
Role: Revue Starlight Moderator
6. Username: SuddenVisitor
Password: omegadim
Role: User
7. Username: MusubiTendouji
Password: nanasisters
Role: User
8. Username: BadEnd
Password: communicate
Role: User
### Post sources
"A Full Style Test" is courtesy of [Ghost's demo blog](https://demo.ghost.io/style-test/), used to test styling.
## Project Structure
- index.php
The main handler of backend functions. Handles routing, loading of Application services, and response handling.
- autoload.php
Autoload is a PHP OOP feature that allows automatic loading of classes using the use keyword. This file provides
a simple autoloading function.
- routes.php
This files lists all routes used by the application
- config.php
This file contains application configuration.
- 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;
- DateHelper
Contains date facilities.
- MailBuilder
Contains a mail composing class.
- Model
The base model implementation. Contains common code for all models.
- SQLHelper
Contains SQL escaping facilities.
- QueryBuilder
The SQL query builder.
- HTTP
HTTP contains a number of abstractions for HTTP, such as Request class.
- Request
Abstracts away PHP request parameters.
- Response
Abstracts away responses, including status code, views, and JSON data.
- File
Handles uploaded files
- 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.
- Storage/
This is where application storage are saved.
- 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
### Vue.js
Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web
Vue.js allows for interactivity while being less cumbersome than manipulating the DOM manually e.g. with jQuery.
[Project Website](https://vuejs.org)
### jQuery
jQuery is a feature-rich JavaScript library.
Here, jQuery is mainly used for its AJAX functionality.
[Project Website](https://jquery.com)
### TinyMCE
TinyMCE is a JavaScrip text editor.
[Project Website](https://www.tiny.cloud)
### tailwindcss-transitions
Tailwind CSS plugin to generate transition utilities
[Project Website](https://github.com/benface/tailwindcss-transitions)
## 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