A modern URL shortener with an analytics dashboard — built with Vite + React on the frontend, and Node.js + Express + Prisma (MongoDB) on the backend.
- Features
- Tech Stack
- Deployment
- Prerequisites & Compatibility
- Local Development Setup
- API Documentation
- Folder Structure
- Shorten long URLs with ease
- Generate custom aliases
- View detailed click analytics (mobile vs desktop)
- User authentication (Sign in, Sign up)
- Clean, responsive UI
- Vite + React
- TypeScript
- ShadCN UI + TailwindCSS
- Node.js + Express
- Prisma ORM with MongoDB
- JWT for authentication
- Rate limiting
- Docker + Docker Compose
- Frontend: https://clickify-client.vercel.app
- Backend: https://clickify-server.vercel.app
Requires Node.js v20+
Some of the libraries used in the backend rely on features only available in Node.js 20 and above — such as enhanced support for native ESM modules and performance improvements.
However, to mitigate local version issues, the backend includes both a Dockerfile
and docker-compose.yml
to easily run the project in a containerized environment with compatible versions.
- Node.js >= 20 (if not using Docker)
- Docker + Docker Compose
- MongoDB instance URI (or use Dockerized Mongo)
git clone https://github.com/Hetav21/clickify.git
cd clickify
cd server
# Install dependencies
npm install
# Setup environment
cp .env.example .env
# Populate .env
${EDITOR} .env
# Start development server
npm run dev
cd client
# Install dependencies
npm install
# Setup environment
cp .env.example .env
# Populate .env
${EDITOR} .env
# Start development server
npm run dev
Just run the following command to start the project in a containerized environment with compatible versions. Do not forget to populate .env
files in /client
and /server
docker-compose up --build
API endpoints are tested using Bruno. You can find the .bru
files under server/api-testing.