This is a project for a Project Management System developed with the Laravel framework. The system allows users to efficiently manage projects, tasks, deadlines, and teams.
-
User Authentication: Implementation of an authentication system so users can register, log in, and log out of the application.
-
Access Permissions: Definition of different levels of access permissions for users, such as administrator, project manager, and team member.
-
Developers: CRUD operations for Developers, manage developers involved in the projects, including their profiles, skills, availability, and assignments to specific tasks or projects.
-
Projects: CRUD operations for projects, allowing the creation, viewing, updating, and deletion of projects.
-
Tasks: CRUD operations for tasks within each project, allowing complete management of activities related to a project.
-
Feedbacks: CRUD operations for Feedbacks, provide a mechanism for team members to give and receive feedback on tasks, projects, or overall performance, facilitating continuous improvement and communication within the team.
-
Team Members: CRUD operations for Team Members, allows administrators to manage team members by adding, removing, or updating information such as name, role, email, etc.
-
Clients or Stakeholders: CRUD operations for Clients or Stakeholders, maintain a record of clients or stakeholders involved in the projects, including contact information, company details, and interaction history.
-
Documents: CRUD operations for Documents, enable uploading, viewing, and management of documents related to projects, such as specifications, contracts, spreadsheets, etc.
-
Project Stages: CRUD operations for Project Stages, divide projects into stages or phases and allow management of these stages, including setting deadlines, assigning responsibilities, and tracking completion status.
-
Deadline Management: Inclusion of fields to set deadlines for projects and tasks, with automatic notifications when deadlines are approaching or overdue.
-
Team Management: Permission to add members to a project's team and assign tasks to specific team members.
-
User-Friendly Blade Interfaces: Development of intuitive and user-friendly user interfaces to view and interact with projects and tasks.
-
Project Progress Reports: Generation of reports on project progress, visually presenting task status and deadline compliance.
-
Social Authentication with Laravel Socialite: Integrate Laravel Socialite to allow users to authenticate using popular social media platforms such as Google, Facebook, Twitter, etc., providing a seamless login experience.
-
Real-Time Notifications: Implementation of real-time notifications using Laravel Echo and WebSockets for instant updates on new tasks, deadline changes, etc.
-
Task Scheduling: Utilization of Laravel Scheduler to schedule recurring tasks, such as sending automatic reminders for approaching deadlines or generating reports.
-
Email Integration: Configuration of email sending to notify users about new tasks, project changes, or invitations to join a team.
-
Commenting and Discussion System: Addition of a commenting system to tasks and projects to allow discussions and additional updates.
-
Integration with Third-Party Tools: Integration with other popular tools used in software development, such as GitHub, GitLab, Trello, or Slack.
-
Two-Factor Authentication (2FA): Strengthening application security by implementing two-factor authentication for users.
-
Logs and Monitoring: Configuration of logging and integration with monitoring tools to diagnose issues and optimize application performance.
-
Data Backup and Restoration: Implementation of a regular backup system to protect application data against loss or corruption.
- Pint: Tool for static code analysis that helps identify potential issues and improvements in PHP code.
./vendor/bin/pint
- Larastan: Static analyzer for Laravel that checks the code for typing errors and other issues.
./vendor/bin/phpstan
- PEST: PHP testing framework that allows writing tests more clearly and concisely.
./vendor/bin/pest
Make sure you have Docker Desktop installed on your system. You can download it here. Then, navigate to your Laravel project directory and run the following command to install Laravel Sail:
composer require laravel/sail --dev
After installing Laravel Sail, initialize it by running the following command in your project directory:
php artisan sail:install
Before starting the containers, install Composer dependencies by running the following Docker command:
docker run --rm \
-u "$(id -u):$(id -g)" \
-v "$(pwd):/var/www/html" \
-w /var/www/html \
laravelsail/php83-composer:latest \
composer install --ignore-platform-reqs
- Clone this repository into the directory where you want to store your project:
git clone <REPOSITORY_URL> project-name
- Copy the
.env.example
file to.env
:
cp .env.example .env
- Open the
.env
file in a text editor and configure the environment variables, such as database connection and email settings.
- Generate a new application key:
sail artisan key:generate
- Run the database migrations to create the necessary tables:
sail artisan migrate:fresh --seed
- Start the local server:
sail artisan serve
- Access the application in your browser:
http://localhost:8000
- Google2FA by Antonio Ribeiro - Package for two-factor authentication
- Laravelia Tutorial: Laravel 9 Google Two-Factor (2FA) Authentication - Tutorial followed to implement two-factor authentication
- Mailtrap - Service for testing emails in development environments
Contributions are welcome! To contribute to this project, follow these steps:
- Fork this repository
- Create a new branch (
git checkout -b feature/new-feature
) - Commit your changes (
git commit -m [STATUS] [File name] Feature
) - Push to the branch (
git push origin feature/new-feature
) - Submit a Pull Request