{"id":17726579,"url":"https://github.com/serpentarius13/personal-blog","last_synced_at":"2025-05-07T02:20:59.094Z","repository":{"id":257932084,"uuid":"868520172","full_name":"Serpentarius13/personal-blog","owner":"Serpentarius13","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-31T20:31:03.000Z","size":10359,"stargazers_count":18,"open_issues_count":5,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-07T02:04:50.040Z","etag":null,"topics":["astro","blog","daisy","pagefind","tailwind","typescript"],"latest_commit_sha":null,"homepage":"https://voidflower.dev","language":"MDX","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Serpentarius13.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-10-06T15:40:44.000Z","updated_at":"2025-04-11T04:06:20.000Z","dependencies_parsed_at":"2024-11-20T16:24:18.040Z","dependency_job_id":"455c50a3-978e-4fb5-8ff3-a2ebda35b873","html_url":"https://github.com/Serpentarius13/personal-blog","commit_stats":null,"previous_names":["serpentarius13/personal-blog"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Serpentarius13%2Fpersonal-blog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Serpentarius13%2Fpersonal-blog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Serpentarius13%2Fpersonal-blog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Serpentarius13%2Fpersonal-blog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Serpentarius13","download_url":"https://codeload.github.com/Serpentarius13/personal-blog/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252799159,"owners_count":21805950,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["astro","blog","daisy","pagefind","tailwind","typescript"],"created_at":"2024-10-25T17:06:00.322Z","updated_at":"2025-05-07T02:20:59.085Z","avatar_url":"https://github.com/Serpentarius13.png","language":"MDX","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Astro Void Flower - My personal blog\n\nYou can use this repo to learn about Astro or to setup your website - it's completely free to use.\nI would also be grateful if you submit issues about bugs or your ideas about how to make it better!\n\n## Tech choices:\n\n- **Styling**: `Tailwind` with `daisyUI` and `@iconify/tailwind`\n- **Code highlights**: `expressive-code`\n- **Search**: `pagefind`\n- **Utility UI-library**: `preact`\n- **Databaase**: `postgres` with `supabase` hosting\n- **ORM**: `kysely` with `Prisma` for migrations\n- **Deployment** - `Vercel`\n\n## Project structure:\n\n`/src` is the main project directory. Everything outside is not related to the project content and what user sees, but rather configurations of database schema, plugins and so on.\n\n- `/content` and `/pages` folders are reserved by Astro for content collections and serving pages.\n\n  - `/pages/api` is for serverless API routes. Currently used for retrieving and updating post data.\n\n- `/components` is a folder of folders for types of components divided by frameworks for easy search: `/astro`, `/react`. There's also `/mdx` folder which I think is okay to use for any shared interactive blocks between the articles. Inside every folder there is flat a division by entity: `/posts`, `/index`, `/navbar`\n\n- `/db` is for Database initialization: `pg` pool, `kysely` instance. In `/db/schema.ts` is a generated file by `prisma-kysely` generator so there would be no need to map Prisma and kysely types. Also there are files like `post.ts` with repositories to manipulate the database, so that API routes would not be as bloated.\n\n- `/layouts` is, well, for layouts. Perhaps its place is in components, but I have left it as is. There is a `base` folder where I split multiple parts of \"Base\" layout - scripts, favicons and so on.\n\n- `/lib` is a folder for utilities, zod schemas, API client and so on.\n\n- `/styles` is for global styles: there is a `components.css` for classes like `box` and `index.css` for other global styles and reexporting the other two.\n\n`/plugins` is for any plugins, specifically for `rehype`, `remark` and `expressive-code`.\n\n`/prisma` is for Prisma configuration.\n\n`startup.sh` and `compose.yml` exist for the purpose of using database locally with ease. The script elevates `docker-compose` with postgres, runs migrations against the db and runs the server. Do not forget to add executable rights to `startup.sh.`\n\n## Features:\n\n- Multiple themes support via `daisyUI`\n- Extended `MDX` support with `remark` and `rehype` plugins\n- Cool themed code blocks with `expressive-code`\n- Global search via `pagefind`\n- Global `configuration` of text width and size\n- Grid view to paginate posts\n- `RSS`, `sitemap`, `OpenGraph` images, `SEO`-optimized, adaptive and performant without any unnecessary JS sent to the client\n- Database integration via `postgres`, `supabase`, `Prisma` and `kysely`\n- `utterances` for comments\n\nThis project is licensed under the terms of the MIT license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserpentarius13%2Fpersonal-blog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fserpentarius13%2Fpersonal-blog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserpentarius13%2Fpersonal-blog/lists"}