AMDP3 Final Project Submission.
Application | ||
.gitignore | ||
.htaccess | ||
autoload.php | ||
build_css.sh | ||
config.php | ||
index.php | ||
package.json | ||
README.md | ||
routes.php | ||
schema.sql | ||
tailwind.config.js | ||
yarn.lock |
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 config.php and adjust the configuration as needed.
- Put all project files in the DocumentRoot (this application cannot be in a subfolder)
- Point the browser to
localhost
or wherever the application is located.
Sample database data
Users
- Username: Administrator Password: yuikaadmin Role: Site Admin
- Username: YuikaMitsumine Password: producertan Role: Idolmaster Shiny Colors Moderator
- Username: AsahiSerizawa Password: asahizzu Role: Idolmaster Shiny Colors Moderator
- Username: YurikoNanao Password: toumeinaprologue Role: Idolmaster Million Live Moderator
- Username: JunnaHoshimi Password: shakespeare Role: Revue Starlight Moderator
- Username: SuddenVisitor Password: omegadim Role: User
- Username: MusubiTendouji Password: nanasisters Role: User
- Username: BadEnd Password: communicate Role: User
Post sources
"A Full Style Test" is courtesy of Ghost's demo blog, 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.
jQuery
jQuery is a feature-rich JavaScript library.
Here, jQuery is mainly used for its AJAX functionality.
TinyMCE
TinyMCE is a JavaScrip text editor.
tailwindcss-transitions
Tailwind CSS plugin to generate transition utilities
CSS Frameworks and Styles used
Tailwind
Tailwind is a utility-first CSS framework for rapidly building custom designs