Astro Nano is a static, minimalist, lightweight, lightning fast portfolio and blog theme.
Built with Astro, Tailwind and Typescript, an no frameworks.
It was designed as an even more minimal theme than my popular theme Astro Sphere
- β 100/100 Lighthouse performance
- β Responsive
- β Accessible
- β SEO-friendly
- β Typesafe
- β Minimal style
- β Light/Dark Theme
- β Animated UI
- β Tailwind styling
- β Auto generated sitemap
- β Auto generated RSS Feed
- β Markdown support
- β MDX Support (components in your markdown)
No frameworks or added bulk
Rendered in ~40ms on localhost
The blog posts on the demo serve as the documentation and configuration.
All commands are run from the root of the project, from a terminal:
Replace npm with your package manager of choice. npm, pnpm, yarn, bun, etc
| Command | Action |
|---|---|
npm install |
Installs dependencies |
npm run dev |
Start local dev server at localhost:4321 |
npm run build |
Build your production site to ./dist/ |
npm run preview |
Preview your build locally before deploying |
This portfolio site includes Docker support for easy deployment and consistent environments, optimized for performance.
| Command | Action |
|---|---|
docker build -t portfolio-nginx . |
Build the Nginx image |
docker run -p 8080:80 portfolio-nginx |
Run the Nginx container on port 8080 |
docker-compose up |
Build and run the container |
docker-compose up --build |
Rebuild and run the container |
./benchmark-boot-time.sh |
Measure the boot time of the Nginx container |
The site is served using Nginx, an ultra-minimal Alpine-based server optimized for static content, providing an excellent balance of features and performance.
The repository includes a GitHub Actions workflow that:
- Builds the Docker image when you push to the main branch
- Pushes the image to GitHub Container Registry
- Deploys the image to your server (requires configuring SSH secrets)
To enable automatic deployment, add these secrets to your GitHub repository:
SSH_HOST: Your server's hostname or IP addressSSH_USERNAME: SSH username for your serverSSH_PRIVATE_KEY: SSH private key for authentication |npm run dev| Starts local dev server atlocalhost:4321| |npm run dev:network| Starts local dev server on local network | |npm run sync| Generates TypeScript types for all Astro modules.| |npm run build| Build your production site to./dist/| |npm run preview| Preview your build locally, before deploying | |npm run preview:network| Preview build on local network | |npm run astro ...| Run CLI commands likeastro add,astro check| |npm run astro -- --help| Get help using the Astro CLI | |npm run lint| Run ESLint | |npm run lint:fix| Auto-fix ESLint issues |
MIT