DTU-PM
is a comprehensive project management dashboard designed to simplify project management tasks such as planning, tracking, and reporting. Built using modern web technologies and cloud services, it provides a robust platform for managing project data, resources, and collaboration. This application leverages Next.js for the frontend, Node.js with Express for the backend, and various AWS services to ensure scalability, security, and high availability.
- Next.js: React-based framework for server-side rendering and static site generation.
- Tailwind CSS: Utility-first CSS framework for rapid UI development.
- Redux Toolkit: State management solution for managing complex state logic.
- Redux Toolkit Query: For managing API requests and caching.
- Material UI Data Grid: For displaying tabular data with sorting, filtering, and pagination.
- Node.js with Express: Server-side framework for building RESTful APIs.
- Prisma: PostgreSQL ORM for managing database interactions.
- PostgreSQL: Relational database management system.
- PgAdmin: Open-source administration and management tool for PostgreSQL.
- AWS EC2: For hosting the application.
- AWS RDS: Managed PostgreSQL database.
- AWS API Gateway: For creating and managing APIs.
- AWS Amplify: For continuous deployment and hosting.
- AWS S3: For storing static assets like images and documents.
- AWS Lambda: Serverless computing service for handling backend logic.
- AWS Cognito: User authentication and authorization.
- User Authentication and Authorization: Secure user login, registration, and access management using AWS Cognito.
- Project Management: Create, update, delete, and manage projects and tasks.
- Resource Allocation: Efficiently manage and allocate resources.
- Collaboration Tools: Facilitate team communication and collaboration.
- Data Visualization: Visualize project progress with Gantt charts and other data visualization tools.
- Real-time Updates: Track changes and updates in real-time using WebSockets.
- Cloud Storage Integration: Seamless integration with AWS S3 for storing and retrieving files.
Before running the application, ensure that you have the following tools installed on your local machine:
- Git
- Node.js (includes npm)
- PostgreSQL
- PgAdmin
-
Clone the Repository
git clone https://github.com/themihirmathur/dtu-pm cd dtu-pm
-
Install Dependencies
- For the client:
cd client npm install cd ..
- For the server:
cd server npm install cd ..
-
Set Up the Database
npx prisma generate npx prisma migrate dev --name init npm run seed
-
Configure Environment Variables
- Create and configure
.env
for server settings:
PORT=your_port_number DATABASE_URL=your_database_url
- Create and configure
.env.local
for client settings:
NEXT_PUBLIC_API_BASE_URL=your_api_base_url
- Create and configure
-
Run the Project
npm run dev
project-management/
│
├── client/ # Frontend code
│ ├── pages/ # Next.js pages
│ ├── components/ # Reusable React components
│ ├── store/ # Redux Toolkit configuration
│ ├── public/ # Public assets (images, icons, etc.)
│ └── styles/ # Tailwind CSS and global styles
│
├── server/ # Backend code
│ ├── prisma/ # Prisma ORM configurations
│ ├── controllers/ # Express route controllers
│ ├── models/ # Database models
│ └── routes/ # Express routes
│
└── README.md # Project documentation
-
Code Repositories and Configuration Files:
- Complete project code on GitHub
- Tailwind CSS configuration
- Redux Toolkit setup
- Database seed files
- Image files for UI components
globals.css
file for Gantt charts
-
Diagrams and Models:
- Data model diagram
- AWS architecture diagram
- AWS Cognito flow diagram
- AWS EC2 Configuration: Set up an EC2 instance to host the application. Follow the AWS documentation for instance creation, security group setup, and SSH access.
- AWS RDS Configuration: Create and configure an RDS PostgreSQL instance for the application database.
- AWS S3 Configuration: Set up an S3 bucket for storing static assets and enable CORS to allow access from the frontend.
- AWS Cognito Configuration: Create a user pool and identity pool for managing authentication and authorization.
- AWS Lambda Functions: Deploy backend functions for serverless tasks such as notifications and file processing.
To reset the ID in a table:
SELECT setval(pg_get_serial_sequence('"[DATA_MODEL_NAME_HERE]"', 'id'), coalesce(max(id)+1, 1), false) FROM "[DATA_MODEL_NAME_HERE]";
We welcome contributions from the community. To contribute, please fork the repository and submit a pull request. Ensure that your code follows the project’s coding standards and includes proper documentation.
For questions or feedback, please reach out to Mihir Mathur.
By providing a detailed overview, this README helps developers and users understand the purpose, setup, and usage of the DTU Project Manager, making it easier to contribute to or deploy the application.