A modern, responsive portfolio and blog application built with Next.js, TypeScript, TailwindCSS, and ShadCN UI components.
Warning
The file /config/legal/imprint.ts is currently configured with CPTCR's legal information, including their address. Reusing this data without permission may result in legal action, as it contains personal or proprietary information not belonging to you.
- Modern, responsive design with dark mode support
- Mobile-friendly interface for seamless user experience
- Fully featured blog with Markdown support
- Admin dashboard with authentication
- Analytics dashboard for blog post insights
- Editorial calendar for content scheduling
- User management system for account handling
- Customizable site settings for personalization
- Discord webhook integration for notifications
- GitHub activity integration for showcasing contributions
- Contact form with email functionality
- SEO optimized for better search engine visibility
- Framework: Next.js 15
- Language: TypeScript
- Styling: TailwindCSS
- UI Components: ShadCN UI
- Database: Neon PostgreSQL
- Authentication: JWT with bcrypt
- CMS: Built-in admin dashboard
- Storage: Vercel Blob for blog posts
- Hosting: Vercel
- Analytics: Vercel Analytics
Ensure the following are installed:
- Node.js 18+ (Latest LTS version recommended)
- PostgreSQL database (Neon recommended)
- SMTP server for email functionality (optional)
-
Clone the repository:
git clone https://github.com/cptcr/next.js_portfolio.git cd next.js_portfolio -
Install the dependencies:
npm install
-
Copy the
.env.examplefile to create your.envfile:cp .env.example .env
-
Configure the environment variables in the
.envfile:- Database URL (from Neon)
- JWT Secret
- Admin credentials
- Email settings
- Discord integration (optional)
- GitHub token (optional)
- Vercel Blob credentials (for blog storage)
-
Start the development server:
npm run dev
-
Open http://localhost:3000 in your browser.
Upon first run, you'll be prompted to create an admin account through the admin setup page:
- Navigate to
/adminin your browser. - Complete the setup form to create your admin account.
- Once created, log in to access the dashboard.
This project uses Neon Postgres with Drizzle ORM. Follow these steps to set up the database:
- Create a free account at Neon.
- Create a new project and database.
- Copy the connection string and add it to the
.envfile asDATABASE_URL.
# Create a new user
npm run create_user
# Delete a user
npm run delete_user
# Test a API Key
npm run test_api # You will be prompted for an API Key. Create one in the Admin dashboard.Blog posts are stored using the https://neon.tech database.
For integrating Discord status and webhooks:
- Create a Discord bot at Discord Developer Portal.
- Add the bot token and your user ID to
.envasDISCORD_BOT_TOKENandDISCORD_USER_ID. - Set up a webhook URL for notifications and add it to
.envasDISCORD_WEBHOOK_URL.
Customize the design by adjusting the following:
- Update
tailwind.config.jsto modify colors, fonts, and other design elements. - Modify global styles in
app/globals.css. - Customize individual components within the
componentsdirectory.
Update your personal content in these locations:
app/page.tsx- Landing page contentapp/about/page.tsx- About page informationcomponents/layout/footer.tsx- Footer links and detailsapp/projects/page.tsx- Showcase projects
To deploy this project, Vercel is the recommended platform. Follow these steps:
- Push your repository to GitHub.
- Import the project into Vercel.
- Configure environment variables within Vercel project settings.
- Deploy your project!
For other hosting platforms, ensure you:
- Set up environment variables.
- Configure the build command (
npm run build). - Specify the output directory (
/.next).
npm run dev- Start the development server.npm run build- Build the application for production.npm run start- Start the production server.npm run lint- Run ESLint.npm run create_user- Create a new user.npm run delete_user- Delete a user.npm run test_api- Test a API Key
Contributions are welcome! To contribute:
- Fork the repository.
- Create a new feature branch (
git checkout -b feature/amazing-feature). - Commit your changes (
git commit -m 'Add an amazing feature'). - Push your branch (
git push origin feature/amazing-feature). - Open a Pull Request.
This project is licensed under the CPTCR Non-Commercial Use License (CPTCR-NC 2025) License. See the LICENSE file for more details.
Created by CPTCR