App is currently in construction.
Inkling
, one player draws a word or phrase while others race against the clock to guess what it is.
- Vite + Typescript + React.js
- ShadcnUI
- Tailwind CSS
- Zod
- Node.js + Express.js
- MongoDB + Mongoose
- Redis Cloud
- Knip
- Socket.io
- Husky
- Docker (optional)
βββ π.husky # Git hooks for pre-commit checks
βββ πbackend # Backend logic with API, models, services, and configurations
β βββ πsrc # Source code for the backend
β | βββ πconfig # Configuration for MongoDB, Redis, and Socket.IO
β | βββ πmodels # MongoDB models for User and Game
β | βββ πroutes # API routes (Auth) with controllers
β | βββ πutils # Utility functions like JWT and hashing
β | βββ πservices # Service logic (e.g., game services)
β | βββ server.js # Server entry point
β | βββ app.js # Creating an express instance
β βββ Dockerfile # Docker configuration
β βββ knip.config.js # Knip configurations
β βββ docker-compose.yml # Multi-container Docker setup
βββ πfrontend # Frontend code using Vite + React + Typescript with Tailwind CSS
β βββ π@ # ShadcnUI components and utility libraries
β βββ πpublic # Public assets
β βββ πsrc # Source code for frontend app
β | βββ πcontext # React contexts (Auth, Canvas, Game)
β | βββ πhooks # Custom hooks for API requests and sockets
β | βββ πpages # Application pages like Account and Game
β | βββ πutils # Helper functions (e.g., date and drawing utilities)
β βββ tailwind.config.js # Tailwind CSS configuration
β βββ tsconfig.json # TypeScript configuration
β βββ vite.config.ts # Vite configuration
βββ .gitignore # Files to be ignored by Git
- Clone the repo
git clone
- Move to Inkling
cd Inkling
- Install dependencies
npm install
-
Frontend
- Move to frontend
cd frontend
- Install dependencies
npm install
- Create a .env file
touch .env
- Add server url
VITE_SERVER_URL=http://localhost:3000
- Run the development server
npm run dev
-
Backend (with docker)
- Move to backend
cd backend
- Pull the docker container
docker pull immortalnova/inkling
- Create a .env file
touch .env
- Add the below to .env file
NODE_ENV=development
- Create a MongoDB database and add your Mongo URL to .env file
MONGO_URL=mongodb+srv://.....
- Generate a random secret key for digital signing (run in terminal) :
openssl rand -base64 32
- Add your secret key used to hash JWT tokens
JWT_SECRET=secret_key.....
- Create a Redis Cloud account and add your Redis details to .env file
REDIS_PASSWORD=password..... REDIS_HOST=redis-something.....redis-cloud.com REDIS_PORT=xxxxx
- Add client url
CLIENT_URL=http://localhost:5173
- Run an image locally (with env variables):
docker run --env-file ./.env -p 3000:3000 immortalnova/inkling
-
Backend (without docker)
- Move to backend
cd backend
- Install dependencies
npm install
- Create a .env file
touch .env
- Add the below to .env file
NODE_ENV=development
- Create a MongoDB database and add your Mongo URL to .env file
MONGO_URL=mongodb+srv://.....
- Generate a random secret key for digital signing (run in terminal) :
openssl rand -base64 32
- Add your secret key used to hash JWT tokens
JWT_SECRET=secret_key.....
- Create a Redis Cloud account and add your Redis details to .env file
REDIS_PASSWORD=password..... REDIS_HOST=redis-something.....redis-cloud.com REDIS_PORT=xxxxx
- Add client url
CLIENT_URL=http://localhost:5173
- Run development server:
npm run dev