{"id":50998749,"url":"https://github.com/imnotannamaria/anna.maria.dev","last_synced_at":"2026-06-20T12:03:01.772Z","repository":{"id":350965058,"uuid":"1208667858","full_name":"imnotannamaria/anna.maria.dev","owner":"imnotannamaria","description":"Personal portfolio + open-source template for software engineers. Built with Next.js 16, MDX, Resend, react-email and Tailwind CSS v4.","archived":false,"fork":false,"pushed_at":"2026-05-04T15:52:24.000Z","size":1659,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-04T17:35:34.330Z","etag":null,"topics":["mdx","motion","next-themes","nextjs","nextjs16","phosphoricons","portfolio","react-email","resend","tailwind","velite"],"latest_commit_sha":null,"homepage":"https://anna-maria-dev.vercel.app/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/imnotannamaria.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-12T15:40:20.000Z","updated_at":"2026-05-04T15:52:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/imnotannamaria/anna.maria.dev","commit_stats":null,"previous_names":["imnotannamaria/anna.maria.dev"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/imnotannamaria/anna.maria.dev","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imnotannamaria%2Fanna.maria.dev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imnotannamaria%2Fanna.maria.dev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imnotannamaria%2Fanna.maria.dev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imnotannamaria%2Fanna.maria.dev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/imnotannamaria","download_url":"https://codeload.github.com/imnotannamaria/anna.maria.dev/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imnotannamaria%2Fanna.maria.dev/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34568743,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-20T02:00:06.407Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mdx","motion","next-themes","nextjs","nextjs16","phosphoricons","portfolio","react-email","resend","tailwind","velite"],"created_at":"2026-06-20T12:03:00.825Z","updated_at":"2026-06-20T12:03:01.767Z","avatar_url":"https://github.com/imnotannamaria.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# anna.maria.dev\n\nPersonal portfolio and open-source template for full-stack engineers. Built with Next.js 16, MDX, Resend, dark mode by default, and smooth animations.\n\n**Live:** [annamaria.app](https://annamaria.app)\n\n---\n\n## What's inside\n\n- **Blog** — MDX posts with syntax highlighting (Shiki), reading progress bar, tag filtering, and dynamic OG images\n- **Projects** — Case studies with sidebar metadata, tag filtering, and rich MDX content\n- **About** — Career timeline, education, full stack grid, GitHub contributions calendar\n- **Uses** — Hardware, tools, and daily apps\n- **Contact** — Email form powered by Resend + React Email\n- **Dark mode** — Default dark, toggle to light, no flash\n- **Animations** — BlurFade entrance animations via Motion\n- **SEO** — Dynamic OG images, sitemap, robots.txt, canonical URLs\n\n## Stack\n\n| Layer            | Tech                    |\n| ---------------- | ----------------------- |\n| Framework        | Next.js 16 (App Router) |\n| Language         | TypeScript (strict)     |\n| Styling          | Tailwind CSS v4         |\n| Content          | MDX via Velite          |\n| Animations       | Motion v12              |\n| Email            | Resend + React Email    |\n| Syntax highlight | Shiki                   |\n| Themes           | next-themes             |\n| OG images        | @vercel/og              |\n| SEO              | next-sitemap            |\n| Icons            | Phosphor Icons          |\n| Deploy           | Vercel                  |\n\n---\n\n## Fork and customize in 5 minutes\n\n### 1. Clone the repo\n\n```bash\ngit clone https://github.com/imnotannamaria/anna.maria.dev.git my-portfolio\ncd my-portfolio\nnpm install\n```\n\n### 2. Set up environment variables\n\nCopy the example and fill in your values:\n\n```bash\ncp .env.example .env.local\n```\n\n```bash\n# Required — get yours at resend.com\nRESEND_API_KEY=re_xxxxxxxxxxxx\n\n# Your public URL (used for sitemap and OG images)\nNEXT_PUBLIC_BASE_URL=https://yourdomain.com\n\n```\n\n### 3. Update your personal info\n\nEdit the following files with your own data:\n\n| File                                   | What to change                       |\n| -------------------------------------- | ------------------------------------ |\n| `app/page.tsx`                         | Name, bio, stats, career entries     |\n| `app/about/page.tsx`                   | Full bio, timeline, stack, interests |\n| `app/uses/page.tsx`                    | Hardware, tools, apps                |\n| `app/layout.tsx`                       | Site title and description           |\n| `app/api/contact/route.ts`             | Email `from` and `to` addresses      |\n| `components/about/github-calendar.tsx` | Your GitHub username                 |\n| `lib/metadata.ts`                      | `baseUrl` fallback                   |\n\n### 4. Run locally\n\n```bash\nnpm run dev\n```\n\nOpen [localhost:3000](http://localhost:3000).\n\n---\n\n## Adding content\n\n### Blog post\n\nCreate `content/blog/your-post-slug.mdx`:\n\n```mdx\n---\ntitle: \"Your post title\"\ndescription: \"A short description for SEO and cards.\"\ndate: \"2026-01-01\"\ntags: [\"next.js\", \"typescript\"]\npublished: true\n---\n\nYour content here.\n```\n\n### Project\n\nCreate `content/projects/your-project-slug.mdx`:\n\n```mdx\n---\ntitle: \"Project Name\"\ndescription: \"What it does in one sentence.\"\ndate: \"2026-01-01\"\ntags: [\"react\", \"typescript\"]\ngithub: \"https://github.com/you/project\"\nlive: \"https://project.vercel.app\"\nfeatured: true\npublished: true\n---\n\n## Overview\n\n...\n```\n\nSet `featured: true` to show on the home page (max 2 shown).\n\n---\n\n## Configuring email (Resend)\n\n1. Create an account at [resend.com](https://resend.com)\n2. Add and verify your domain\n3. Create an API key and add it to `.env.local`\n4. Update `from` and `to` in `app/api/contact/route.ts`:\n\n```ts\nfrom: \"Portfolio \u003chello@yourdomain.com\u003e\",\nto: [\"you@yourdomain.com\"],\n```\n\n---\n\n## Deploy to Vercel\n\n1. Push to GitHub\n2. Import the repo at [vercel.com/new](https://vercel.com/new)\n3. Add the environment variables from `.env.local` in the Vercel dashboard\n4. Deploy — sitemap and robots.txt are generated automatically at build time\n\n---\n\n## Project structure\n\n```\napp/\n  page.tsx              # Home\n  about/page.tsx        # About\n  blog/                 # Blog list + [slug]\n  projects/             # Projects list + [slug]\n  uses/page.tsx         # Uses\n  contact/page.tsx      # Contact form\n  api/\n    contact/route.ts    # Email via Resend\n    og/route.tsx        # Dynamic OG images\n  icon.tsx              # Favicon\n  layout.tsx            # Root layout\n\ncontent/\n  blog/*.mdx            # Blog posts\n  projects/*.mdx        # Project case studies\n\ncomponents/\n  layout/               # Navbar, Footer\n  ui/                   # Button, Badge, BlurFade, etc.\n  blog/                 # MDX renderer, reading progress\n  projects/             # Project card\n  about/                # GitHub calendar\n  contact/              # Contact form\n\nemails/\n  contact-email.tsx     # React Email template\n\nlib/\n  velite.ts             # Content query helpers\n  utils.ts              # cn(), formatDate(), estimateReadingTime()\n  metadata.ts           # createMetadata() helper\n```\n\n---\n\n## License\n\nMIT — fork freely, customize, make it yours.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimnotannamaria%2Fanna.maria.dev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimnotannamaria%2Fanna.maria.dev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimnotannamaria%2Fanna.maria.dev/lists"}