Built with Next 15, React 19 and much much love.
- Modern UI: Dark mode with clean typography and accent colors
- Responsive Design: Optimized for mobile, tablet, and desktop
- Real-time Integrations:
- GitHub activity, repositories, and contributions via API
- Availability status (based on Germany timezone)
- “Quote of the Day” from external API
- Interactive Experience:
- Smooth page transitions with Framer Motion
- Expandable project cards
- Real-time form validation
- Performance Optimizations:
- Server-side rendering with caching
- Optimized image loading
- Admin Dashboard
- Edit and manage posts
- Create posts
- Get post analytics
- Next.js API Routes
- GitHub API integration
- Real-time data fetching
- Home – Animated hero + featured projects
- About – Skills and GitHub dashboard
- Projects – Filterable showcase + activity feed
- Community – OSS contributions + mentorships
- Blog – Searchable, filterable articles
- Contact – Live validation + availability indicator
- Admin - Stats and post management
-
Clone the repo
git clone https://github.com/cptcr/next.js_portfolio.git cd next.js_portfolio
-
Install dependencies
npm install # or yarn or pnpm
-
Environment config
Create a
.env.local
file:GITHUB_TOKEN= # Discord Integration DISCORD_USER_ID= DISCORD_BOT_TOKEN= USE_LANYARD=false # Email EMAIL_HOST=smtp.mailgun.org EMAIL_ADDRESS= EMAIL_SMTP_PORT=587 EMAIL_AUTH_USERNAME= EMAIL_AUTH_PASSWORD= EMAIL_SECURE= # Auth ADMIN_USERNAME=cptcr ADMIN_PASSWORD=<secure-password> JWT_SECRET=<generate-a-secure-random-string> # Vercel # Run "npm i -g -D vercel" # After installation run "vercel init" # After init run "vercel env pull" (vercel will now create the required token, vercel may affect the env file so double check if everything is still here or create a backup file) VERCEL_OIDC_TOKEN= # In your deployed site on vercel, # go to storage and search if vercel already created one, if not, # click on add new, then enter /posts as directory and deploy it # after that go into the blob settings and obtain the key BLOB_READ_WRITE_TOKEN= # Used for the blogs api NEXT_PUBLIC_SITE_UTL=http://localhost:3000 # (Change if you use a domain)
-
Start development server
npm run dev
-
Open
http://localhost:3000
in your browser
- Connect your GitHub repo to Vercel
- Add environment variables in the Vercel dashboard
- Deploy instantly
cptcr-website/
├── app/ # App Router pages
│ ├── api/ # API routes
│ ├── blog/ # Blog system
│ ├── contact/ # Contact page
│ └── ... # Other routes
│
├── components/ # Reusable components
│ ├── ui/ # UI primitives
│ ├── layout/ # Layout components
│ └── [feature]/ # Page-specific components
│
├── lib/ # Utilities & types
│ ├── api/
│ ├── utils/
│ └── types/
│
├── public/ # Static assets
├── tailwind.config.js
└── next.config.js
Licensed under the MIT License.
Built by Tony (cptcr), a 17-year-old backend developer based in Stuttgart, Germany, specializing in modern web stacks.