A modern full-stack portfolio monorepo built with Turborepo, TanStack Start, React 19, and TypeScript.
- Blog & Articles - Full-featured blog with markdown support, comments, likes, views, and tagging system
- Projects Showcase - Portfolio projects with tech stack display, GitHub links, demo links, and detailed descriptions
- Code Snippets - Organized code snippets with syntax highlighting and categorization
- Experience Timeline - Experience, education and certificate timeline
- Bookmarks - Curated web bookmarks using Raindrop
- AI Chatbot - Interactive chatbot with portfolio knowledge, reasoning display, and streaming responses
- GitHub Integration - Real-time GitHub stats, contribution graphs, activity charts, and repository metrics
- Blog Analytics - View counts, engagement metrics, and monthly statistics
- User Analytics - User registration and activity tracking with visual charts
- OAuth Authentication - GitHub social sign-in with Better Auth
- Admin Dashboard - Full CRUD operations for all content types
- User Management - Admin interface for managing users
- Content Moderation - Draft/publish workflows for all content types
- Turborepo - High-performance monorepo build system
- React 19 + React Compiler - Latest React with performance optimizations
- TanStack Start + Router + Query + Form - Full-stack React framework
- Tailwind CSS v4 + shadcn/ui - Modern styling and component library
- Drizzle ORM + PostgreSQL + Upstash - Type-safe database operations and caching
- Better Auth - Secure authentication system
- tRPC - End-to-end typesafe APIs
.
├── apps/
│ ├── web/ # Main portfolio website (port 3000)
│ └── dashboard/ # Admin dashboard (port 3002)
├── packages/
│ ├── api/ # tRPC API routers and procedures
│ ├── auth/ # Better Auth configuration
│ ├── config/ # Shared configuration (site, navbar)
│ ├── db/ # Drizzle ORM setup and schemas
│ ├── mdx/ # MDX processing and plugins
│ ├── shared/ # Shared utilities and constants
│ ├── types/ # TypeScript type definitions
│ ├── ui/ # Shared UI components (shadcn/ui)
│ ├── utils/ # Utility functions
│ └── validators/ # Zod validation schemas
└── tooling/
├── github/ # GitHub Actions workflows
├── tailwind/ # Tailwind CSS configuration
└── typescript/ # Shared TypeScript configs
-
Clone this repository
git clone git@github.com:FaZeRs/portfolio.git cd portfolio -
Install dependencies
bun install
-
Create a
.envfile based on.env.example -
Push the schema to your database
bun db:push
-
Run the development server
bun dev
- Web app: http://localhost:3000
- Dashboard: http://localhost:3002
| Command | Description |
|---|---|
bun dev |
Start all apps in development mode |
bun build |
Build all apps and packages |
bun typecheck |
Run TypeScript type checking |
bun lint |
Run Biome linter |
bun format |
Format code with Biome |
bun check |
Run Biome check (lint + format) |
bun db:push |
Push schema changes to database |
bun db:studio |
Open Drizzle Studio |
bun auth:generate |
Regenerate Better Auth schema |
bun ui-add |
Add shadcn/ui components |
bun clean |
Clean all node_modules |
bun clean:workspaces |
Clean workspace build artifacts |
bun deps |
Update dependencies to latest versions |
- React Compiler docs, Working Group - React Compiler is still in beta.
- TanStack/router#2863 - TanStack Start is currently in beta and may still undergo major changes.
- shadcn-ui/ui#6714 - We're using the
canaryversion of shadcn/ui for Tailwind v4 support.
Better Auth is configured for OAuth with GitHub, but can be easily modified to use other providers.
To change providers or enable email/password authentication, update:
- Auth config:
packages/auth/src/index.ts - Sign-in page in the respective app
Resources:
Build all apps:
bun buildStart production servers:
# Web app
cd apps/web && bun start
# Dashboard
cd apps/dashboard && bun startRead the TanStack Start hosting docs for deployment options.
