This is a Kanban board application built with Next.js, tRPC, Prisma, and React Beautiful DnD. It allows users to create boards, add cards to columns, and drag and drop cards between columns.
Demo: View Kanban Board App
- Create and delete boards
- Add cards to columns
- Drag and drop cards between columns
- Node.js
- PostgreSQL
- Prisma
- tRPC
- Auth0
- Typescript
- Node.js (v14 or later)
- npm or yarn
- PostgreSQL database
This application uses Auth0 for authentication. Follow these steps to set up Auth0:
-
Sign up for an account at Auth0.
-
Create a new application in the Auth0 dashboard.
-
Set the application type to "Regular Web Application".
-
In your Auth0 application settings, add the following URLs:
- Allowed Callback URLs:
http://localhost:3000/api/auth/callback - Allowed Logout URLs:
http://localhost:3000 - Allowed Web Origins:
http://localhost:3000
- Allowed Callback URLs:
-
Create a
.envfile in the root directory and add the following environment variables:AUTH0_SECRET='use command `openssl rand -hex 32` to generate a 32 bytes value' AUTH0_BASE_URL='http://localhost:3000' AUTH0_ISSUER_BASE_URL='https://{YOUR_AUTH0_DOMAIN}' AUTH0_CLIENT_ID='{YOUR_AUTH0_CLIENT_ID}' AUTH0_CLIENT_SECRET='{YOUR_AUTH0_CLIENT_SECRET}'Replace
{YOUR_AUTH0_DOMAIN},{YOUR_AUTH0_CLIENT_ID}, and{YOUR_AUTH0_CLIENT_SECRET}with your actual Auth0 application values. -
Generate a secure random value for
AUTH0_SECRETusing the command:openssl rand -hex 32 -
Install the Auth0 Next.js SDK:
npm install @auth0/nextjs-auth0
This application uses Jamendo for the lofi music player. Follow these steps to set up Jamendo:
-
Sign up for a developer account at Jamendo.
-
Create a new application in the Jamendo developer dashboard.
-
Obtain your Client ID from the application settings.
-
Add the following environment variable to your
.envfile:JAMENDO_CLIENT_ID='{YOUR_JAMENDO_CLIENT_ID}'Replace
{YOUR_JAMENDO_CLIENT_ID}with your actual Jamendo Client ID. -
The application is now set up to use Jamendo's API for fetching lofi tracks.
This application uses OpenAI's Whisper for speech-to-text conversion. Follow these steps to set up OpenAI:
-
Add the following environment variable to your
.envfile:OPENAI_API_KEY='your_openai_api_key_here'Replace
your_openai_api_key_herewith the API key you just generated.
Note: Be careful not to expose your OpenAI API key publicly. Always keep it secure and never commit it to version control systems.
-
Clone the repository:
git clone https://github.com/emmanuel39hanks/trpc-kanban-board-app.git cd trpc-kanban-board-app -
Install dependencies:
npm install -
Set up your environment variables: Create a
.envfile in the root directory and add your database URL:DATABASE_URL="postgresql://username:password@localhost:5432/kanban_db" -
Generate Prisma client:
npx prisma generate -
Set up the database:
npx prisma db push -
Run the development server:
npm run dev -
Open http://localhost:3000 in your browser to see the application.
npm run dev: Starts the development servernpm run build: Builds the application for productionnpm run start: Starts the production servernpm run lint: Runs the linter
-
Fix bugs:
- Improve error handling for API calls
- Address any console warnings or errors
-
Add homepage:
- Create a landing page with app information
- Implement user sign-up functionality
- Implement user login functionality
- Add user authentication flow
-
Add authentication:
- Implement user registration and login
- Secure routes and API endpoints
-
Add custom columns:
- Allow users to create, edit, and delete columns
- Implement column reordering
-
Add confirmation modals:
- Implement confirmation dialogs for delete actions (boards, columns, cards)
-
Improve loading states:
- Add skeleton loaders for boards and cards
- Implement better loading indicators for API calls
-
Enhance drag and drop functionality:
- Add visual feedback during drag operations
- Implement smooth animations for card movements
-
Add AI voice task creation:
- Integrate OpenAI's Whisper for speech-to-text conversion
- Allow users to add tasks using voice commands
-
Add background music feature:
- Integrate lofi music player
- Allow users to toggle background music on/off
-
Add timed tasks:
- Implement a Pomodoro-style timer for tasks
- Allow users to set custom time limits for tasks
- Add notifications/toasts for task time completion
-
Improve responsiveness and design:
- Optimize layout for mobile devices
- Implement a responsive design for all screen sizes
Contributions are welcome! Please feel free to submit a Pull Request.