Skip to content

Latest commit

 

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Portfolio Blog Starter

This is a porfolio site template complete with a blog. Includes:

  • MDX and Markdown support
  • Optimized for SEO (sitemap, robots, JSON-LD schema)
  • RSS Feed
  • Dynamic OG images
  • Syntax highlighting
  • Tailwind v4
  • Vercel Speed Insights / Web Analytics
  • Geist font

Demo

https://portfolio-blog-starter.vercel.app

How to Use

You can choose from one of the following two methods to use this repository:

One-Click Deploy

Deploy the example using Vercel:

Deploy with Vercel

Clone and Deploy

Execute create-next-app with pnpm to bootstrap the example:

pnpm create next-app --example https://github.com/vercel/examples/tree/main/solutions/blog blog

Then, run Next.js in development mode:

pnpm dev

Deploy it to the cloud with Vercel (Documentation).

Latest Activity Cron Setup

Add these environment variables in Vercel Project Settings:

  • INTERVALS_ICU_API_KEY
  • INTERVALS_ICU_ATHLETE_ID (defaults to i691810 if omitted)
  • CRON_SECRET (Bearer token for /api/cron/activity and /api/activity)
  • BLOB_READ_WRITE_TOKEN (Vercel Blob; created when you enable Blob on the project)
  • TELEGRAM_BOT_TOKEN
  • TELEGRAM_CHAT_ID

This project includes a Vercel Cron in vercel.json that calls /api/cron/activity every day at 21:00 UTC. Each run sends a Telegram message with success/failure status.

The latest run JSON is stored in Vercel Blob at pathname activities/latest-run.json with private access (readable only with your blob token on the server, not a public URL).

To manually test the cron endpoint locally:

curl -H "Authorization: Bearer $CRON_SECRET" http://localhost:3000/api/cron/activity

To fetch the cached latest-run JSON from Blob (also requires Bearer auth):

curl -H "Authorization: Bearer $CRON_SECRET" http://localhost:3000/api/activity

To simulate Telegram failure handling locally:

TELEGRAM_BOT_TOKEN=invalid TELEGRAM_CHAT_ID=invalid curl -H "Authorization: Bearer $CRON_SECRET" http://localhost:3000/api/cron/activity

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages