Skip to content

Latest commit

 

History

History
119 lines (86 loc) · 4.16 KB

File metadata and controls

119 lines (86 loc) · 4.16 KB

Nova

Release CI Check CodeQL License: MIT

A minimal, fast, and fully customizable personal portfolio built with Next.js App Router. Renders pinned GitHub repositories and latest Medium posts at runtime with ISR.

Live: algotyrnt.com

Stack

Area Tooling
Framework Next.js 16 (App Router)
Language TypeScript
UI MUI + Emotion
Animation Framer Motion
Analytics Vercel Analytics + Speed Insights

Structure

src/
├── app/                # Routes, metadata, robots, sitemap
├── components/
│   ├── layout/         # header.tsx, footer.tsx
│   ├── sections/       # about, work, projects, blogs, connect, privacy
│   ├── theme/          # MUI + Emotion setup
│   └── ui/             # fade-in, stagger animation primitives
├── lib/
│   ├── api/            # GitHub GraphQL + Medium RSS fetchers
│   ├── config.ts       # Typed env exports
│   └── types.ts        # Shared TypeScript types

Getting Started

Prerequisites

  • Node.js 20+
  • npm
  • Optional: GitHub personal access token for Projects section

1. Clone

git clone https://github.com/algotyrnt/nova.git
cd nova

2. Install

npm install

3. Configure environment

cp .env.example .env.local

Update .env.local with your content.

Important notes:

  • SITE_KEYWORDS, WORK_EXPERIENCE, and SOCIAL_LINKS must be valid JSON.
  • GITHUB_TOKEN is optional in code. If not set (or invalid), the Projects section simply returns no items.
  • MEDIUM_USERNAME controls the Medium feed endpoint.

4. Run locally

npm run dev

Open http://localhost:3000.

Environment Variables

All content is driven by environment variables — no CMS required. See .env.example for the full list.

Variable Purpose
AUTHOR_NAME Full name used in page metadata
TWITTER_HANDLE Twitter/X username (without @) for SEO
EMAIL Contact email in Connect and footer
WEBSITE_URL Canonical site URL
SITE_NAME Site title
SITE_DESCRIPTION Meta description
ABOUT_TEXT About section body text
SITE_KEYWORDS JSON array of SEO keywords
WORK_EXPERIENCE JSON array of work entries
SOCIAL_LINKS JSON array of social links
GITHUB_USERNAME GitHub username for pinned repos
GITHUB_TOKEN GitHub token for GraphQL API (optional)
MEDIUM_USERNAME Medium username for RSS feed

SITE_KEYWORDS, WORK_EXPERIENCE, and SOCIAL_LINKS must be valid JSON. If GITHUB_TOKEN is unset, the Projects section is hidden automatically.

Deploy

Deploy with Vercel

Set the environment variables from .env.example in your Vercel project settings.

Generic deployment flow

npm run dev      # Development server
npm run build    # Production build
npm run check    # Lint + type check

Contributing

See CONTRIBUTING.md.