A role-based content management system built to facilitate writing and editing articles within a company structure. The project includes two roles: Writer and Editor. Writers are responsible for drafting articles, while Editors can review, edit, and publish or hide them. Editors also manage users and company details.
- Role-based Application: Roles include Writer and Editor, with access control for creating, editing, and publishing articles.
- Article Management: Writers create and edit articles; Editors finalize and publish articles.
- User and Company Management: Editors can create and manage user profiles and company information.
- Authentication & Authorization: Secure login and role-based access control.
- Published Articles Display: Publicly display all published articles.
- Writer Role: Write and submit articles for review within a specific company context.
- Editor Role: Review, edit, and decide on publishing or hiding articles, along with managing user and company details.
Follow these steps to set up and run the project locally.
Make sure you have the following installed:
- Node.js and npm
- PHP and Composer
- MySQL or your preferred database
-
Clone the Project
git clone https://github.com/Lester-Fong/AI-FE-EXAM.git
-
Install packages
npm run watch composer install
-
Create a database name publish-article
-
migrate the tables and execute the seeders
php artisan migrate --seed
-
Generate Authentication key
php artisan passport:client --password
Note: Copy the secret key generate by the command and paste it to HelperToken.php $user_client_secret variable.
-
Set up Apache virtualhost on Windows
**~ Kindly follow the guide in this link ~**
Virtual Host Setup -
Run the Project Locally
npm run watch
For writer:
email: [email protected]
,
password: Article_writer_123
For editor:
email: [email protected]
,
password: Article_editor_123
Note: If you have any questions regarding setting up or running the project, you can reach out to me and I will be happy to guide you. Thanks!
Vue3 - Frontend JavaScript framework
Vuex - State management library for Vue.js
Rebing GraphQL - GraphQL integration with Laravel
Laravel 8 - Backend PHP framework
Bootstrap - Responsive CSS framework
VueSweetAlert2 - SweetAlert2 integration for Vue
VueDatePicker - Custom date picker component for Vue
DataTable - JavaScript library for dynamic tables
Summernote - WYSIWYG editor for article content creation