Skip to content

ratalla816/AWS-Project-Management-Dashboard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AWS-Project-Management-Dashboard

badge
badge
badge
badge
badge
badge

Description

An enterprise-grade project management application that features robust data analytics and user management capabilities. The application is built with a Next.js frontend and a Node.js backend, with a PostgreSQL database. The application is deployed on AWS using EC2, RDS, and Cognito. The application is designed to be scalable and secure, with a focus on loose coupling and high availability.

⚙️ Technologies

Next.js | Material UI | PostgreSQL | Redux Toolkit | Prisma | Amazon Linux | AWS Amplify | AWS EC2 | AWS RDS | AWS Cognito | Tailwind CSS | AWS S3 | AWS Lambda Trigger | AWS API Gateway | PM2

Table of Contents

Documentation

Diagrams

AWS Architecture Diagram
Screenshot

Data Model Diagram
Screenshot

AWS Cognito Diagram
Screenshot

Getting Started

This is a Next.js project bootstrapped with create-next-app.
First, make sure these are installed:

  • Git
  • Node.js
  • npm (Node Package Manager)
  • PostgreSQL (download)
  • PgAdmin (download)

Installation Steps

  1. Clone the repository: git clone [git url] cd project-management

  2. Install dependencies in both client and server: cd client npm i cd .. cd server npm i

  3. Set up the database: npx prisma generate npx prisma migrate dev --name init npm run seed

  4. Configure environment variables:

  • .env for server settings (PORT, DATABASE_URL)
  • .env.local for client settings (NEXT_PUBLIC_API_BASE_URL)
  1. Run the project npm run dev run the development server (client & server):
npm run dev

Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.

You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.

This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.

Learn More

To learn more about Next.js, take a look at the following resources:

Additional Resources


Authenticate existing React application users by using Amazon Cognito and AWS Amplify UI: https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/authenticate-react-app-users-cognito-amplify-ui.html
import https from "node:https";

export const handler = async (event) => {
    const postData = JSON.stringify({
        username: event.request.userAttributes["preferred_username"] || event.userName,
        cognitoId: event.userName,
        profilePictureUrl: "i1.jpg",
        teamId: 1
       });
        
    const options = {
        hostname: "70nlkwfw7i.execute-api.us-east-2.amazonaws.com",
        port: 443,
        path: "/create-user",
        method: "POST",
        headers: {
            "Content-Type": "application/json",
            "Content-length": Buffer.byteLength(postData)
        }
    };
    
     return new Promise((resolve, reject) => {
         const req = https.request(options, (res) => {
             res.setEncoding("utf8");
             let responseBody = "";
             res.on("data", (chunk) => responseBody += chunk)
             res.on("end", () => resolve(responseBody));
       });
     
       req.on("error", (error) => reject(error));
          req.write(postData);
          req.end();
     })
 };

    const responseBody = await new Promise((resolve, reject) => {
        const req = https.request(options, res => {
            res.setEncoding("utf8");
            let body = "";
            res.on("data", chunk => body += chunk);
            res.on("end", () => resolve(body));
        });
        
        req.on("error", reject);
        req.write(postData);
        req.end();
    });

    return event; 
}; 

Deployment

Screenshot

PostgreSQL testing via pgAdmin
Screenshot

Testing via Postman
Screenshot

SideBar functionality
Screenshot

Easily Export data
Screenshot

Kanban Board
Screenshot

Light and Dark modes
Screenshot

Acknowledgements


Ed Roh
edroh.com

License

badge
Permission to use this application is granted under the MIT license. https://opensource.org/licenses/MIT

Contact:

Holler at me! rob.atalla@robatalla816.com