Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 16 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
# 📅 TaskFlow API
# 📅 TaskFlow

![NestJS](https://img.shields.io/badge/NestJS-E0234E?style=flat-square&logo=nestjs&logoColor=white)
![Next.js](https://img.shields.io/badge/Next.js-000000?style=flat-square&logo=nextdotjs&logoColor=white)
![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?style=flat-square&logo=typescript&logoColor=white)
![PostgreSQL](https://img.shields.io/badge/PostgreSQL-4169E1?style=flat-square&logo=postgresql&logoColor=white)
![TypeORM](https://img.shields.io/badge/TypeORM-FE0803?style=flat-square)
![Tailwind CSS](https://img.shields.io/badge/Tailwind_CSS-06B6D4?style=flat-square&logo=tailwindcss&logoColor=white)
![DaisyUI](https://img.shields.io/badge/DaisyUI-5A0EF8?style=flat-square&logo=daisyui&logoColor=white)
![Docker](https://img.shields.io/badge/Docker-2496ED?style=flat-square&logo=docker&logoColor=white)
![Makefile](https://img.shields.io/badge/Makefile-064F8C?style=flat-square&logo=gnu&logoColor=white)

TaskFlow API is a REST API for collaborative task and board management.
TaskFlow is a collaborative task management application for managing boards, tasks, members, and permissions.
It helps users manage boards, tasks, members, and permissions in a shared workflow environment.

## 📄 License

TaskFlow API is licensed under the terms described in the [LICENSE file](LICENSE).
TaskFlow is licensed under the terms described in the [LICENSE file](LICENSE).
Please refer to the LICENSE file for complete license terms.

## ✨ Features
Expand All @@ -22,12 +25,16 @@ Please refer to the LICENSE file for complete license terms.
- Task management
- Board members and roles
- Permission-based access control
- Swagger API documentation
- API documentation
- Web interface

## 🛠️ Tech stack

- NestJS
- Next.js
- TypeScript
- DaisyUI
- TailwindCSS
- PostgreSQL
- TypeORM
- Docker / Docker Compose
Expand Down Expand Up @@ -82,9 +89,9 @@ The project supports two profiles:

Make sure each profile uses its own PostgreSQL service and environment configuration.

## 📘 API documentation
## 📘 Documentation

Swagger documentation is available when the application is running.
API documentation is available when the backend is running.

Typical local URL:

Expand All @@ -96,9 +103,9 @@ Adjust the port or route if your local configuration is different.

## 🎯 Project goal

TaskFlow API provides the backend for a collaborative task manager.
It is designed to support boards, task assignment, member roles, and permission-based actions in a clean REST architecture.
TaskFlow is designed to support collaborative work through boards, tasks, member roles, and permission-based actions.
It provides a structured environment for organizing work, assigning responsibilities, and managing access across teams.

## 🔗 Repository

GitHub repository: [TaskFlow API](https://github.com/SebastienCozeDev/task-flow-api)
GitHub repository: [TaskFlow](https://github.com/SebastienCozeDev/task-flow-api)
4 changes: 3 additions & 1 deletion apps/api/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ FROM node:24-slim AS build
WORKDIR /usr/src/app

COPY package*.json ./
COPY apps/api/nest-cli.json apps/api/nest-cli.json
COPY apps/api/tsconfig*.json apps/api/tsconfig*.json
COPY apps/api/package.json apps/api/package.json

RUN npm ci
Expand All @@ -19,7 +21,7 @@ ENV NODE_ENV=production

COPY --from=build /usr/src/app/package*.json ./
COPY --from=build /usr/src/app/node_modules ./node_modules
COPY --from=build /usr/src/app/dist ./dist
COPY --from=build /usr/src/app/apps/api/dist ./dist
COPY --from=build /usr/src/app/apps/api ./apps/api

WORKDIR /usr/src/app/apps/api
Expand Down
11 changes: 7 additions & 4 deletions apps/web/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ COPY apps/web apps/web
ENV NODE_ENV=production
ENV NEXT_TELEMETRY_DISABLED=1

ARG NEXT_PUBLIC_API_BASE_URL
ENV NEXT_PUBLIC_API_BASE_URL=${NEXT_PUBLIC_API_BASE_URL}

RUN npm run build -w apps/web

FROM node:24-slim AS production
Expand All @@ -23,12 +26,12 @@ ENV NEXT_TELEMETRY_DISABLED=1
ENV PORT=3000
ENV HOSTNAME=0.0.0.0

COPY --from=builder /usr/src/app/apps/web/.next/standalone ./
COPY --from=builder /usr/src/app/apps/web/.next/static ./apps/web/.next/static
COPY --from=builder /usr/src/app/apps/web/public ./apps/web/public
COPY --from=build /usr/src/app/apps/web/.next/standalone ./
COPY --from=build /usr/src/app/apps/web/.next/static ./apps/web/.next/static
COPY --from=build /usr/src/app/apps/web/public ./apps/web/public

USER node

EXPOSE 3000

CMD ["node", "apps/web/server.js"]
CMD ["node", "apps/web/server.js"]
2 changes: 1 addition & 1 deletion apps/web/app/globals.css
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@import "tailwindcss";
@plugin "daisyui" {
themes: light --default;
};
}
2 changes: 1 addition & 1 deletion apps/web/lib/auth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export async function registerUser(data: RegisterRequest): Promise<boolean> {
const response = await register(data);

if (!response?.displayName) {
removeAccessToken
removeAccessToken();
return false
}

Expand Down
3 changes: 3 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,12 +90,15 @@ services:
build:
context: .
dockerfile: ./apps/web/Dockerfile
args:
NEXT_PUBLIC_API_BASE_URL: ${NEXT_PUBLIC_API_BASE_URL}
container_name: taskflow-web-prod
env_file:
- .env
environment:
NODE_ENV: production
NEXT_TELEMETRY_DISABLED: 1
NEXT_PUBLIC_API_BASE_URL: ${NEXT_PUBLIC_API_BASE_URL}
depends_on:
- api-prod
networks:
Expand Down