SETUP TASKS
- run the app
- update content.ts and add translations
- seed db with blog examples
- setup an api-key to protect
/postsapi route - connect your tg bot and set chat your chat id
- build and run your app
DEPLOYMENT TASKS
- deploy it on vps or your own machine,
- setup your domain,
- add ssl certificates
- and add process management worklow
- Modern React/Next.js Architecture: Built with Next.js 16, React 19, and TypeScript
- Responsive Design: Mobile-first design with Tailwind CSS
- Blog System: markdown based blog posts with a secured api route for their management
- Contact Form: API route for form submissions
- SEO Optimized (TODO): Meta tags and structured data
- Performance (TODO): Optimized images and code splitting
- Node.js 18+
- npm or yarn
- Install dependencies:
npm install- Run the development server:
npm run dev- Open http://localhost:3000 in your browser.
Go to /src/app/lib/content.ts and paste your content by changing values in defined objects.
Then, use that information to define /messages/en.json and messages/ru.json files
If you want to have post examples on the blog page, then run the following command:
# from the project's root
node scripts/seed-dbCopy .example into .env.local
cp .example .env.local# run this command and copy the generated api key into .env.local
node scripts/generate-api-key.js- Message @BotFather on Telegram
- Create a new bot with /newbot
- Get your bot token
- Get your chat ID by messaging your bot and visiting: https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates
- Define
TELEGRAM_BOT_TOKENandTELEGRAM_CHAT_IDin.env.local
- Build the application:
npm run build- Start the production server:
npm start-
set up certificates
-
set up reverse proxy
-
Use pm2 to manage the process
pm2 start ecosystem.config.js- Build the Docker image:
docker build -t portfolio .- Run the container:
docker run -p 3000:3000 portfolio- Build the Docker image
- Deploy to any container platform (AWS, GCP, Azure, etc.) or vps
- Lighthouse Score: X across all metrics
- Core Web Vitals: Optimized for Google's ranking factors
- Image Optimization: Next.js automatic image optimization
- Code Splitting: Automatic code splitting for optimal loading
- Meta Tags: Dynamic meta tags for each page
- Structured Data: JSON-LD structured data
- Sitemap: Automatic sitemap generation
- Robots.txt: Search engine optimization
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License.