Skip to main content

portfolio

calcom
github-actions
graphql
hashnode-api
markdown
nextjs
portfolio
portfolio-website
resend

Shrijal Acharya’s portfolio

The source for techwithshrijal.com, a portfolio for my software projects, technical writing, work history, community events, and contact information.

Live site · Report a bug · Request a feature

What is included

  • Recent projects and a searchable project archive
  • DEV and freeCodeCamp articles aggregated into one searchable blog index
  • Server-rendered Markdown with syntax highlighting, embeds, and sanitization
  • Work history, community events, contact form, scheduling, RSS, and metadata
  • Dark/light themes, Vercel Analytics, and Speed Insights

Stack

  • Next.js 16 App Router, React 19, and TypeScript
  • Tailwind CSS 4 and Radix UI primitives
  • Unified/Remark/Rehype for sanitized Markdown rendering
  • Resend for contact-form delivery and Cal.com for scheduling
  • Bun for dependency management, scripts, and tests
  • Vercel behind Cloudflare for hosting

Project metadata and README content are mirrored from public GitHub repositories tagged with the showcase topic. A scheduled GitHub Actions workflow keeps those files synchronized.

Local development

Requirements:

  • Node.js 20.9 or newer
  • Bun 1.4 or newer

Install dependencies and create the local environment file:

bun install
cp .env.example .env

The application expects these variables:

RESEND_API_KEY=re_...
RESEND_FROM_EMAIL=[email protected]
NEXT_PUBLIC_MODE=development

Start the development server:

bun run dev

Then open http://localhost:3000.

Quality checks

bun run lint
bun run typecheck
bun run test
bun run build

bun run check runs lint, type checking, and unit tests together. Pull requests and pushes to main run those checks plus a production build in GitHub Actions.

Content maintenance

  • Recent projects are generated from the newest synced repositories tagged with the showcase topic, so they do not need a separate manual update.
  • Project pages are sourced from content/projects/*_README.mdx.
  • .github/workflows/fetch_project_readmes.yml refreshes showcase repositories daily and removes entries that no longer carry the showcase topic.
  • Blog cards and article bodies come from DEV and the freeCodeCamp author feed. Requests are cached, time-bounded, and retried with a bounded backoff.

License

This project is available under the MIT License.