|
| 1 | + |
| 2 | +# Full stack FastAPI template Next.js |
| 3 | + |
| 4 | +Developer blog built with Astro, with a comprehensive feature set and well-structured code. |
| 5 | + |
| 6 | +Run your coding blog in minutes. Benefit from robust, understandable, well-separated code. Optionally customize design by modifying files in the components folder. Multiple deployment options, Vercel, Nginx, Github Pages and Docker. |
| 7 | + |
| 8 | +# Screenshot |
| 9 | + |
| 10 | + |
| 11 | + |
| 12 | +# Demo |
| 13 | + |
| 14 | +**Vercel: [https://nemanjam.vercel.app](https://nemanjam.vercel.app)** |
| 15 | + |
| 16 | +**Nginx: [https://nemanjamitic.com](https://nemanjamitic.com)** |
| 17 | + |
| 18 | +# Features |
| 19 | + |
| 20 | +- Latest Astro, static, high performance website |
| 21 | +- Post and Project content collections |
| 22 | +- Tailwind responsive design |
| 23 | +- Color themes with light/dark modes |
| 24 | +- Tags and Categories, pagination |
| 25 | +- Optimized images, view transitions |
| 26 | +- Extracted constants, types, utils, configs, queries, assets |
| 27 | +- Full TypeScript, Zod schemas, validated config |
| 28 | +- ESLint, Prettier, path aliases, sorted imports |
| 29 | +- React for interactive components |
| 30 | +- Design system pages, latest commit info in footer |
| 31 | +- Remote markdown content option |
| 32 | +- Hierarchical layouts |
| 33 | +- SEO friendly - sitemap, metadata |
| 34 | +- Open Graph image, Satori generated |
| 35 | +- Code syntax highlighting, Twitter/YouTube/OG-links embeds |
| 36 | +- Giscus comments, Share post |
| 37 | +- Draft posts, RSS and JSON feeds |
| 38 | +- Vercel, GitHub Pages, Nginx, x86 and arm Docker deployments |
| 39 | +- GitHub Actions workflows and local scripts |
| 40 | + |
| 41 | +# Running locally |
| 42 | + |
| 43 | +Install and run project locally for development. |
| 44 | + |
| 45 | +## Environment variables |
| 46 | + |
| 47 | +This project uses static generation - **all environment variables are build-time only**. The values are inlined at build time and are immutable at runtime. Any variables defined at runtime will be ignored. |
| 48 | + |
| 49 | +A list of required and optional environment variables: [.env.development.example](https://github.com/nemanjam/nemanjam.github.io/blob/main/.env.development.example). |
| 50 | + |
| 51 | +## Installation and running |
| 52 | + |
| 53 | +```bash |
| 54 | +# install packages |
| 55 | +pnpm install |
| 56 | + |
| 57 | +# copy and set environment variables |
| 58 | +cp .env.development.example .env.development |
| 59 | + |
| 60 | +# run development server and visit http://localhost:3000 |
| 61 | +pnpm dev |
| 62 | + |
| 63 | +# delete node_modules and pnpm-lock.yaml |
| 64 | +pnpm clean |
| 65 | +``` |
| 66 | + |
| 67 | +# Deploying to Vercel |
| 68 | + |
| 69 | +### Vercel button |
| 70 | + |
| 71 | +[](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fnemanjam%2Fnemanjam.github.io&envDescription=https%3A%2F%2Fgithub.com%2Fnemanjam%2Fnemanjam.github.io%23environment-variables&envLink=https%3A%2F%2Fgithub.com%2Fnemanjam%2Fnemanjam.github.io%2Fblob%2Fmain%2F.env.production.example&project-name=Developer%20blog&repository-name=nemanjam.github.io&demo-title=Developer%20blog&demo-description=Developer%20blog%20template%20built%20with%20Astro%20and%20Tailwind.&demo-url=https%3A%2F%2Fnemanjam.vercel.app&demo-image=https%3A%2F%2Fraw.githubusercontent.com%2Fnemanjam%2Fnemanjam.github.io%2Frefs%2Fheads%2Fmain%2Fdocs%2Fscreenshots%2Fdeveloper-blog-screenshot-1200x630.png&skippable-integrations=1&from=templates&teamSlug=amy-vtest314) |
| 72 | + |
| 73 | +Just click the button above and follow the wizard to create a new project, build it, and deploy it. |
| 74 | + |
| 75 | +By default, the `SITE_URL` environment variable is inferred from the predefined `VERCEL_PROJECT_PRODUCTION_URL`. You can also explicitly set a custom `SITE_URL`, as well as `PLAUSIBLE_DOMAIN` and `PLAUSIBLE_SCRIPT_URL`, to enable Plausible Analytics. |
| 76 | + |
| 77 | +After updating environment variables, you will need to rebuild and redeploy the app for the changes to take effect. |
| 78 | + |
| 79 | +#### Github Actions |
| 80 | + |
| 81 | +In Vercel dashboard create a new project and set the environment variables. In Vercel account settings create a access token and set it as `VERCEL_TOKEN` Github repository secret. In Vercel project settings copy your user id and project id and set them as `VERCEL_ORG_ID` and `VERCEL_PROJECT_ID` Github repository secrets. |
| 82 | + |
| 83 | +```bash |
| 84 | +# Github repository -> Settings -> Secrets and variables -> Repository secrets |
| 85 | + |
| 86 | +VERCEL_TOKEN |
| 87 | +VERCEL_ORG_ID |
| 88 | +VERCEL_PROJECT_ID |
| 89 | +``` |
| 90 | + |
| 91 | +Then just trigger the following workflow: |
| 92 | + |
| 93 | +```bash |
| 94 | +# .github/workflows |
| 95 | + |
| 96 | +# uses Vercel CLI to pull, pre-build and deploy |
| 97 | +# you must have an existing project and environment variables already defined on Vercel |
| 98 | +vercel__deploy-manual.yml |
| 99 | +``` |
| 100 | + |
| 101 | +**Detailed tutorial:** https://nemanjamitic.com/blog/2026-02-26-vercel-static-github-actions |
| 102 | + |
| 103 | +# Credits |
| 104 | + |
| 105 | +It reuses good solutions from other projects, see the [Credits list](https://github.com/nemanjam/nemanjam.github.io#credits). |
| 106 | + |
0 commit comments