Welcome to the Freelancer Project Management System (FPMS)! This project is a Class 12th Computer Science project designed to demonstrate the practical implementation of database management using Python and MySQL.
Made by: Ram Chimnani
School: Small Wonder School
The FPMS is a comprehensive project management system that allows freelancers to manage their projects efficiently. It provides a color-coded, user-friendly console interface and a robust database schema that supports tasks, project logs, archiving, searching, and more. This system showcases advanced Python-MySQL integration techniques, suitable for a Class 12th Computer Science project.
-
Project Management
- Add, View, Update, and Delete Projects
- Store details such as client name, payment, deadlines, progress, and priority
- Archive projects instead of deleting them to preserve records
- Mark projects as Completed, automatically setting progress to 100%
-
Tasks
- Manage tasks for each project: add, update, and delete tasks
- Assign tasks to team members, set due dates, and track status
-
Project Logs
- Automatic Logging of significant changes (e.g., updates, deletions, task creation)
- View the history of changes to each project for better accountability
-
Advanced Searching
- Search for projects by client name, status, or payment status
- Display archived or active projects selectively
-
Color-Coded Console UI
- A visually appealing menu with ANSI escape codes for color and styling
- User-friendly sub-menus (e.g., Task Menu) to keep navigation clear
-
Reporting and Export
- Generate a project summary report with progress, priorities, and deadlines
- Export projects to CSV for further analysis or backup
- Python 3.x
- MySQL Server (running locally or remotely)
- Python Libraries:
mysql-connector-python(install usingpip install mysql-connector-python)
-
Install MySQL
- Ensure MySQL is installed and running on your system.
-
Create Database and Tables
- Create a database named
freelancer_dband run the extended SQL schema (includingprojects,tasks, andproject_logs). - Below is an example of how you might create the tables:
CREATE DATABASE freelancer_db; USE freelancer_db; CREATE TABLE projects ( project_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, client_name VARCHAR(255) NOT NULL, status VARCHAR(50) NOT NULL DEFAULT 'Pending', payment FLOAT NOT NULL DEFAULT 0.0, deadline DATE, progress INT DEFAULT 0, priority VARCHAR(50) DEFAULT 'Medium', team_members TEXT, client_email VARCHAR(255), client_phone VARCHAR(15), payment_status VARCHAR(50) DEFAULT 'Pending', completion_date DATE, archived TINYINT(1) DEFAULT 0 ); CREATE TABLE tasks ( task_id INT AUTO_INCREMENT PRIMARY KEY, project_id INT, task_name VARCHAR(255) NOT NULL, description TEXT, assigned_to VARCHAR(255), due_date DATE, status VARCHAR(50) DEFAULT 'Pending', priority VARCHAR(50) DEFAULT 'Medium', FOREIGN KEY (project_id) REFERENCES projects(project_id) ON DELETE CASCADE ); CREATE TABLE project_logs ( log_id INT AUTO_INCREMENT PRIMARY KEY, project_id INT, log_message TEXT, log_date DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (project_id) REFERENCES projects(project_id) ON DELETE CASCADE );
- Create a database named
-
Install Required Python Libraries
pip install mysql-connector-python
-
Clone or Download This Project
- Save the main Python code (e.g.,
fpms.py) into a folder.
- Save the main Python code (e.g.,
-
Configure MySQL Connection
- In
fpms.py, update theconnect_dbfunction with your MySQL credentials:def connect_db(): return mysql.connector.connect( host="localhost", user="root", password="YOUR_PASSWORD_HERE", database="freelancer_db" )
- In
-
Run the Program
python fpms.py
-
Main Menu
- The application presents a colorful console menu with options to manage projects and tasks.
- Use the numeric input to navigate through options such as:
- Add Project: Specify project name, client details, payment, etc.
- View Projects: Displays all active projects.
- Update Project: Dynamically update status, payment, progress, etc.
- Archive Project: Archive instead of deleting.
- Search Projects: Search by client name, status, or payment status.
- Task Menu: Manage project tasks in a separate sub-menu.
- Logs: View the change history for a specific project.
- Generate Report: Shows a summary of all projects (archived or active).
- Export to CSV: Export data for backup or external analysis.
- Exit to close the application.
-
Task Menu
- Add Task: Create tasks for any project.
- View Tasks: List all tasks belonging to a specific project.
- Update Task: Change task name, description, due date, status, etc.
- Delete Task: Remove an existing task.
This project was created by Ram Chimnani from Small Wonder School as part of the Class 12th Computer Science curriculum.
For any queries or feedback, please feel free to reach out!
Enjoy managing your freelance projects with FPMS! 🎉