2
0
Fork 0
My personal web sight aria.dog is partially generated by this Astro code https://aria.dog/
Find a file
2025-12-15 14:27:49 +01:00
.vscode Demons: Sculptures, code vein page, misc changes 2025-07-22 02:16:27 +02:00
public Demons: small reworks, starting new article 2025-07-19 17:26:51 +02:00
src Small edits to wo long overview 2025-12-15 14:27:49 +01:00
.editorconfig Add editorconfig, move to strictest tsconfig 2025-01-23 12:10:12 +01:00
.gitignore Progress on drafts & components - pushing to link to repo 2025-05-14 10:59:34 +02:00
astro.config.ts Move article on L3 buttons 2025-12-15 14:24:48 +01:00
package-lock.json Improve cards, sitemap. Fix Barks PostTitle 2025-12-14 17:19:54 +01:00
package.json Improve cards, sitemap. Fix Barks PostTitle 2025-12-14 17:19:54 +01:00
README.md Move article on L3 buttons 2025-12-15 14:24:48 +01:00
svelte.config.ts Move all .js .mjs to .ts 2025-01-22 14:04:28 +01:00
tsconfig.json Opengraph pages made, now to puppet 2025-06-19 03:42:52 +02:00

view-source:aria.dog

This is not a template. This is not a "theme" or a "skin". This is not code you can use easily. This code is provided for analysis, not for reuse.

If you think re-using this code will save you effort, you are wrong: it is difficult to use in practice and will waste your time.

If my sharing this source code causes me more unpleasant than pleasant interactions, i will stop publishing it.

About this code

This is the source of my web sight, made with Astro as its static site generator.
I'm constantly tweaking it.
The live version is at https://aria.dog/ and its compiled view-source is more or less useless to analyze, hence this repo.

Being only meant as a view-source option, this is not the full canonical latest revision of my site: some posts are missing. But it's close enough for you to see how i do things and play with it at home. I aim to always keep this repo in a state you can play with it locally after a npm install.

Don't use the codebase and design directly, but make yours any useful technique you see. Use them without or with credit, but in either case, i'd like to hear from you if my code helped or inspired, or if you have a complex question about my code that shows you're eager to learn something and have done your homework.

On the other hand, i do not want to hear from you if you're expecting "support" to get this code to "work". Use a theme if you want code that "works".

Posts i wrote about astro and how i use it

Structure & design principles

Multiple independent sub-sites that all have their own style.

The Barks blog and Demon's Worlds received the most effort: Modular was made earlier and is a complete shitshow needs a fair bit of restructuring.

Layouts of sub-sites explicitly provide a bunch of components to make available to MDX files: look at the autoImport.ts files.

Bundling multiple sites in a single repo means you have only one astro.config.mjs to work with that you can't override, but you can generally work around the limitation in practice.

As a general rule, Svelte components are always used client-side, while Astro components are always pre-rendered server-side and never hydrated.
Client-side JS follows the progressive enhancement doctrine: things remain usable without JS unless they have a damn good reason to require interactivity. This is sometimes taken to the extreme: where random values are needed in pages, content is hashed to ensure reproducible builds.

Components rarely bundle their own CSS to keep them reusable across sub-sites.

Flexibility is key, so i do not adhere to rigid principles.

Death before detransition or using Tailwind.

Current homepage is just a placeholder until i make something better.

I'm culturally far from the modern javascript scene, i don't do things the way bootcamp kids do. I avoid abstractions that do not make my life easier.

If you peep the code, feel free to suggest improvements, but i might ignore them, especially if they entail new dependencies or increased complexity. This is my personal site, not a collaborative project.

I know doing things my way might fly against conventional wisdom, but having a personal hobby website without a business model already flies against conventional wisdom.

TODO-list

Find the FIXME and TODO strings in the project (best done with an editor extension to that effect) + read ./src/content/barks/internal/todo-list/index.mdx.

Excluded files

Among others, the following files present on my end are not bundled:

  • Post drafts
  • Big downloads in ./public/downloads/ - just get them off my site
  • Big internal files (like the Blender sources of my 3D icons)
  • Spicy posts i don't want some fuckboy to waste the time of git.gay peeps by demanding a takedown. View them on my site!

See ./.gitignore

You should still have everything you need to play with the code.

Spellbook

Command Action
npm install You will certainly not regret installing 30 to 40 npm packages
npx astro telemetry disable Frick the heck off
npm run dev https://localhost:4321
npm run astro -- --help Prints out nerd shit

To generate cards, run these while the dev server is running:

node src/scripts/demons/generate-cards.js
node src/scripts/barks/generate-cards.js

Credits

Resources embedded in this project are credited within the published site itself, and generally within the mdx files present in the same subfolder. Let me know if you have trouble finding the credit for specific resources. Bear in mind that most images used are originals.

Fonts and graphics used in Demon's Worlds are credited on its about page (./src/content/demons/about/index.mdx).

The Barks blog embeds the variable font Amstelvar. You can play with its variable axes on v-fonts.com.

You can find the fonts used via a @fontsource npm package in ./package.json and more info about them on Google Fonts.

Contact

Send me dog gifs here: woof@aria.dog