Elysium is an opinionated, minimal, responsive, accessible and SEO-friendly Astro personal website and digital garden theme. This theme is inspired by and based on Astro Paper.
This theme follows best practices and provides accessibility out of the box. Light and dark mode are supported by default. Moreover, additional color schemes can also be configured.
- type-safe markdown
- super fast performance
- accessible (Keyboard/VoiceOver)
- responsive (mobile ~ desktops)
- SEO-friendly
- light & dark mode
- fuzzy search
- draft posts & pagination
- sitemap & rss feed
- followed best practices
- highly customizable
- dynamic OG image generation for posts
- write content using Obsidian
- [[WikiLinks]] support
- Incoming links support
- Outgoing links support (coming soon)
Inside of Elysium, you'll see the following folders and files:
/
โโโ public/
โ โโโ assets/
โ โ โโโ logo.svg
โ โ โโโ logo.png
โ โโโ favicon.svg
โ โโโ robots.txt
โ โโโ toggle-theme.js
โโโ src/
โ โโโ assets/
โ โ โโโ socialIcons.ts
โ โโโ components/
โ โโโ content/
โ โ | _templates/
โ โ | .obsidian/
โ โ | blog/
โ โ | โโโ some-blog-posts.md
โ โ | projects/
โ โ โโโ config.ts
โ โโโ layouts/
โ โโโ pages/
โ โโโ plugins/
โ โโโ styles/
โ โโโ utils/
โ โโโ config.ts
โ โโโ middleware.ts
โ โโโ types.ts
โโโ package.json
Astro looks for .astro
or .md
files in the src/pages/
directory. Each page is exposed as a route based on its file name.
Any static assets, like images, can be placed in the public/
directory.
All Obsidian Templates are stored in src/content/blog
directory.
All blog posts are stored in src/content/blog
directory.
All project posts are stored in src/content/projects
directory.
Documentation can be read in two formats_ markdown & blog post.
Main Framework - Astro
Type Checking - TypeScript
Component Framework - ReactJS
Styling - TailwindCSS
Fuzzy Search - FuseJS
Icons - Boxicons | Tablers
Code Formatting - Prettier
Deployment - Cloudflare Pages
Linting - ESLint
The easiest way to run this project locally is to run the following command in your desired directory.
# npm 6.x
npm create astro@latest --template vandermerwed/elysium
# npm 7+, extra double-dash is needed:
npm create astro@latest -- --template vandermerwed/elysium
# yarn
yarn create astro --template vandermerwed/elysium
You can easily add your Google Site Verification HTML tag in Elysium using environment variable. This step is optional. If you don't add the following env variable, the google-site-verification tag won't appear in the html <head>
section.
# in your environment variable file (.env)
PUBLIC_GOOGLE_SITE_VERIFICATION=your-google-site-verification-value
All commands are run from the root of the project, from a terminal:
Command | Action |
---|---|
npm install |
Installs dependencies |
npm run dev |
Starts local dev server at localhost:4321 |
npm run build |
Build your production site to ./dist/ |
npm run preview |
Preview your build locally, before deploying |
npm run format:check |
Check code format with Prettier |
npm run format |
Format codes with Prettier |
npm run sync |
Generates TypeScript types for all Astro modules. Learn more. |
npm run cz |
Commit code changes with commitizen |
npm run lint |
Lint with ESLint |
If you have any suggestions/feedback, you can contact me via twitter. Alternatively, feel free to open an issue if you find bugs or want to request new features.
Licensed under the MIT License, Copyright ยฉ 2023
Made with ๐ค by Daniel van der Merwe
Big thanks to Sat Naing for creating Astro Paper which this theme is based on.