Nexus is a link aggregation platform designed for developers, content creators, and freelancers to consolidate their online presence into a single, beautifully organized public profile.
- Centralized Link Hub: Add, edit, and manage all your important links—social media, portfolios, projects, and contacts—in one place.
- Profile Customization: Personalize your profile with a custom avatar, display name, and biography. Control your profile's visibility by setting it to public or private.
- Drag-and-Drop Reordering: Easily reorder your links with a smooth drag-and-drop interface.
- Real-time Dashboard Preview: Instantly see how your changes look on your public profile with a live preview right in your dashboard.
- Link Visibility Control: Toggle the visibility of individual links, allowing you to keep some private without deleting them.
- Security First: Built with security in mind, featuring JWT-based authentication with Refresh Token Rotation, secure
httpOnlycookies, and rate limiting. - Data Portability: Export all of your account data to a JSON file at any time.
The project is a full-stack TypeScript monorepo built with a modern and robust tech stack:
- Monorepo: pnpm + Turborepo
- Frontend: Next.js, React, TailwindCSS, SWR
- Backend: Node.js, Express.js, Prisma
- Database: PostgreSQL
- Deployment: Docker, Fly.io
- CI/CD: GitHub Actions
- Testing: Jest, React Testing Library, Supertest
Follow these instructions to set up the project for local development.
- Node.js:
v22.xor higher. - pnpm:
v10.7.1or higher (the project usescorepackto enforce this version). - Docker: Required for running the local PostgreSQL database.
-
Clone the repository:
git clone [https://github.com/Azganoth/nexus.git](https://github.com/Azganoth/nexus.git) cd nexus -
Enable Corepack (if not already enabled) to use the correct
pnpmversion:corepack enable -
Install dependencies from the root of the monorepo:
pnpm install
-
Set up environment variables:
- Copy
apps/api/env.exampletoapps/api/.env. - Copy
apps/web/env.exampletoapps/web/.env. - Update the
DATABASE_URLinapps/api/.envto point to the Docker container:DATABASE_URL="postgresql://dev:dev@localhost:5432/nexus-dev"
- Copy
-
Start and seed the database:
# Start the PostgreSQL Docker container pnpm db:start # Apply the database schema pnpm db:push # Seed the database with sample data pnpm db:seed
-
Run the development servers:
pnpm dev
- The Frontend will be available at
http://localhost:3002. - The Backend API will be available at
http://localhost:3001. - You can explore the database using Prisma Studio:
pnpm db:studio.
- Production Frontend:
https://nexusapp.fly.dev - Production API:
https://nexusapp-api.fly.dev