A web application developed with Next.js 15, Tailwind CSS, Prisma, and Supabase that allows different types of users (Clients, Project Managers, and Designers) to manage design projects securely, intuitively, and functionally.
git clone https://github.com/reiorozco/project-manager-app.git
cd project-manager-app
npm install
# or if you use yarn
yarn install
Create a new project in Supabase
Configure authentication:
http://localhost:3000
http://localhost:3000/auth/callback
as a redirect URLCreate a bucket for files:
project-files
Create a .env.local
file in the project root with the following content:
# Supabase
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
DIRECT_URL=postgresql://postgres:[email protected]:5432/postgres
DATABASE_URL=postgresql://postgres:[email protected]:5432/postgres
npx prisma db push
npm run dev
# or with yarn
yarn dev
Now you can access the application at http://localhost:3000.
The project is built following the Next.js App Router architecture, which allows the combination of server-side and client-side components. The application follows an API-first approach, where client components communicate with API endpoints to perform CRUD operations.
Authentication: Implemented using Supabase Auth, which provides a complete system for registration, login, and session management.
Authentication flow:
Role-based authorization:
A complete project management system was implemented with the following functionalities:
Each operation is protected by authorization checks to ensure that only users with appropriate permissions can make changes.
React Query was used to efficiently manage server state:
The interface was built with Tailwind CSS and ShadCN UI components to create a modern and coherent experience:
Several security layers were implemented:
├── app/ # Application structure (App Router)
│ ├── api/ # API endpoints
│ ├── auth/ # Authentication pages
│ └── auth-context.tsx # Authentication context
│ ├── components/ # Reusable components
│ └── dashboard/ # UI Components (ShadCN)
│ └── form/ # UI Components (ShadCN)
│ └── projects/ # UI Components (ShadCN)
│ ├── projects/ # Project management
│ └── page.tsx # Home page
├── components/ # Reusable components
│ └── ui/ # UI Components (ShadCN)
├── generated/ # Prisma generated
├── lib/ # Utilities and services
│ ├── services/ # Application services
│ ├── supabase/ # Supabase client
│ └── prisma.ts # Prisma client
├── prisma/ # Prisma configuration
│ └── schema.prisma # Database schema
├── public/ # Static files
├── .env.local # Environment variables (not included in repo)
├── middleware.ts # Authentication middleware
├── next.config.js # Next.js configuration
└── package.json # Project dependencies