Kanban board management software with focus to simplicity.
Workspace members can easily add other users to it, read, create and update issues created by themselves or others.
The project is build with TypeScript and React by leveraging powerfull features of Next.js framework.
All server and client side communication is accomplished with GraphQL via Apollo Client and Apollo Server. Client side fetched data is memory cached and after each request is updated with latest information.
GraphQL schema is built by using Pothos GraphQL with additional plugins:
-
Auth plugin - to ensure that only authorized users can interact with assigned workspace;
-
Prisma plugin - to tighter integrate Pothos with Prisma and making easier to define Prisma based object types and resolve queries fater;
-
Validation plugin - to always validate query fields arguments based on Zod schema;
-
Error plugin - for easily including error types in GraphQL schema and hooking up error types to resolvers.
All user generated data is saved to PlanetScale serverless MySQL database.
Next Auth was used to handle user authnetication and sign in with Discord or GitHub.
For styling the user interface, custom React components were written by using Tailwind CSS (v3.2).
The project is deployed on Vercel with automatic continuous integration (CI) and continuous delivery (CD).
First, clone the project from GitHub and install all necesary dependencies:
git clone https://github.com/birzgalisn/kanban.git
cd kanban/
npm ci
After project is cloned and packages are installed, environment variables needs to be set. Clone .env.example
and fill in blank fields:
cp .env.example .env
Then setup Docker development environment:
make dev
When all is configured, push the Prisma schema and insert data into the database:
make db-init
NB: To push the schema to DB, the Docker development environment needs to be running.
When Docker is running and DB is setup, the application is available at http:https://kanban.localhost; Prisma studio - http:https://studio.kanban.localhost