This is a project management application built with Django and Vue.js. It offers a comprehensive set of features to facilitate efficient project planning, task management, team collaboration, and productivity tracking.
-
Task Boards
- Implement a Kanban-style task board for organizing tasks into different stages (e.g., To Do, In Progress, Done).
- Users can create tasks, assign them to team members, and move them between stages.
-
Gantt Charts
- Integrate a Gantt chart component to visualize project timelines, task dependencies, and milestones.
- Enable users to drag and drop tasks to adjust schedules and manage project timelines effectively.
-
Time Tracking
- Provide features for tracking time spent on tasks and projects.
- Users can start/stop timers, manually log time entries, and view reports to analyze time usage and productivity.
-
Team Collaboration
- Enable collaboration among team members by allowing them to comment on tasks, mention others, and receive notifications for updates.
- Implement user roles and permissions to control access to project data and ensure privacy.
-
User Authentication and Authorization
- Implement user authentication to secure access to the application.
- Define different user roles (e.g., admin, project manager, team member) with varying levels of permissions to ensure data security and integrity.
-
Project and Task Management
- Provide functionality for creating and managing projects, setting project goals and deadlines, and organizing tasks within projects.
- Users can prioritize tasks, set due dates, and track progress towards project milestones.
-
File Upload and Sharing
- Allow users to upload and share files related to projects and tasks.
- Implement version control to track changes and revisions, ensuring data integrity and collaboration efficiency.
-
Calendar Integration
- Integrate a calendar view to visualize project deadlines, milestones, and team availability.
- Users can schedule meetings, appointments, and project-related events directly within the application.
-
Reporting and Analytics
- Generate reports and analytics to track project progress, identify bottlenecks, and measure team productivity.
- Include charts and graphs to visualize data, making it easier for users to understand and interpret project metrics.
-
Notifications and Reminders
- Implement email notifications, in-app alerts, and reminders to keep users informed about important updates, upcoming deadlines, and assigned tasks.
-
Clone the repository:
git clone https://github.com/AbdullahBakir97/Project-Management-Tool.git cd Project-Management-Tool/backend
-
Create a virtual environment and activate it:
python -m venv venv
source venv/bin/activate
# On Windows use `venv\Scripts\activate`
- Install the required packages:
pip install -r requirements.txt
- Apply the migrations:
python manage.py migrate
- Create a superuser:
python manage.py createsuperuser
- Start the development server:
python manage.py runserver
- Navigate to the frontend directory:
cd ../project-frontend
- Install the required packages:
npm install
- Start the development server:
npm run serve
- Access the Django admin panel at http://localhost:8000/admin to manage users and data.
- Access the frontend application at http://localhost:8080 to start using the project management tool.
Ensure that your Vue.js application correctly handles the authentication tokens and communicates with the Django backend.
- Axios Instance Setup:
- Create an Axios instance with the base URL of your Django backend API.
<!-- src/api.js -->
<script>
import axios from 'axios';
const api = axios.create({
baseURL: 'http://localhost:8000/api', // Change this to your actual API base URL
});
export default api;
</script>
- Vuex Store Configuration:
- Set up Vuex for state management, including handling authentication tokens.
<!-- store/index.js -->
<script>
import { createStore } from 'vuex';
import api from '../service/api';
const store = createStore({
state: {
authToken: localStorage.getItem('authToken') || null,
},
mutations: {
setAuthToken(state, token) {
state.authToken = token;
localStorage.setItem('authToken', token);
api.defaults.headers.common['Authorization'] = `Token ${token}`;
},
clearAuthToken(state) {
state.authToken = null;
localStorage.removeItem('authToken');
delete api.defaults.headers.common['Authorization'];
},
},
actions: {
async login({ commit }, credentials) {
const response = await api.post('auth/token/login/', credentials);
commit('setAuthToken', response.data.auth_token);
await this.dispatch('fetchUser');
},
async logout({ commit }) {
await api.post('auth/token/logout/');
commit('clearAuthToken');
},
async fetchUser({ commit }) {
const response = await api.get('auth/users/me/');
commit('setUser', response.data);
},
},
getters: {
isAuthenticated: state => !!state.authToken,
},
});
export default store;
</script>
- Main Entry File:
- Integrate the Vuex store and Vue Router into your Vue application.
<!-- src/main.js -->
<script>
import { createApp } from 'vue';
import App from './App.vue';
import store from './store';
import router from './router';
import api from './service/api';
const app = createApp(App);
app.use(store);
app.use(router);
// Attach axios instance to the global properties
app.config.globalProperties.$http = api;
app.mount('#app');
</script>
This project is licensed under the - MIT License.