aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikhil M Warrier <nikhilmw.dev@gmail.com>2026-03-14 11:55:41 +0530
committerNikhil M Warrier <nikhilmw.dev@gmail.com>2026-03-14 11:55:41 +0530
commit5f16545ba8b5a770f1665b1d66f33601e2288d1f (patch)
tree852efa47ea3a85fa970ce2e915621e7bc6db7670
parent93e958c28d98a3c83723eff5b5ff61eed1e6dbe8 (diff)
Update README
-rw-r--r--README.md320
1 files changed, 57 insertions, 263 deletions
diff --git a/README.md b/README.md
index 51d4a4c..af6d5be 100644
--- a/README.md
+++ b/README.md
@@ -1,295 +1,89 @@
-![Showcase Card](/public/static/twitter-card.png)
+# FOSSCET Website
-<div align="center">
+The [FOSSCET website](https://fosscet.codeberg.page) documents all events conducted by the club. We also keep member profiles and op-ed blog posts.
-## astro-erudite
+## Quick how-tos
+- [Add your member card](#add-your-member-card)
+- [Create a new form](#create-a-new-form)
+- [Create a new event entry](#create-a-new-form)
+- [Create a blog post](#create-a-new-form)
+- [Build and test the site locally](#build)
-![Stargazers]
-[![License]](LICENSE)
+## Add your member card
-</div>
+- Create a file `<yourname>.md` in `src/content/members/`.
+Example: If you want your username to be `nik`, create file `src/content/members/nik.md`.
-astro-erudite is an opinionated, unstyled static blogging template built with [Astro](https://astro.build/), [Tailwind](https://tailwindcss.com/), and [shadcn/ui](https://ui.shadcn.com/). Extraordinarily loosely based off the [Astro Micro](https://astro-micro.vercel.app/) theme by [trevortylerlee](https://github.com/trevortylerlee).
+- Fill out the fields that you want in the frontmatter section (between the triple hyphens).
-| ![Preview 1](/public/static/preview-1.png) | ![Preview 2](/public/static/preview-2.png) |
-| ------------------------------------------ | ------------------------------------------ |
-| ![Preview 3](/public/static/preview-3.png) | ![Preview 4](/public/static/preview-4.png) |
+- To upload an avatar, put the image in `./public/images/myavatar.png`, and fill the form like so: `avatar: /public/images/myavatar.png`.
-> [!NOTE]
-> To learn more about why this template exists, read [The State of Static Blogs in 2024](https://astro-erudite.vercel.app/blog/the-state-of-static-blogs), where I share my take on what constitutes a great blogging template and my goals while developing this one.
+- Add more detailed content after the frontmatter.
----
-
-## Community examples
-
-Below are some fantastic examples of websites based on this template. If you wish to add your site to this list, open a [pull request](https://github.com/jktrn/astro-erudite/pulls)!
-
-| Site | Author | Tags | Source |
-|-|-|-|-|
-| [enscribe.dev](https://enscribe.dev) | [@jktrn](https://github.com/jktrn) | portfolio, interactive | [→](https://github.com/jktrn/enscribe.dev) |
-| [emile.sh](https://emile.sh) | [@echoghi](https://github.com/echoghi) | minimal, flexoki | [→](https://github.com/echoghi/v5) |
-| [decentparadox.me](https://decentparadox.me) | [@decentparadox](https://github.com/decentparadox) | portfolio, sci-fi | [→](https://github.com/decentparadox/decentparadox.me) |
-| [flocto.github.io](https://flocto.github.io/) | [@flocto](https://github.com/flocto) | blog | [→](https://github.com/flocto/flocto.github.io) |
-| [dumbprism.me](https://www.dumbprism.me/) | [@dumbprism](https://github.com/dumbprism) | portfolio, bento | [→](https://github.com/dumbprism/dumbprism-portfolio) |
-| [hyuki.dev](https://hyuki.dev/) | [@snow0406](https://github.com/snow0406) | minimal, blog | [→](https://github.com/Snow0406/hyuki.dev) |
-| [ldd.cc](https://ldd.cc/) | [@xJoyLu](https://github.com/xjoylu) | blog | [→](https://ldd.cc/) |
-| [rezarezvan.com](https://rezarezvan.com/) | [@rezaarezvan](https://github.com/rezaarezvan) | academic, blog | [→](https://rezarezvan.com/) |
-| [blog.z0x.ca](https://blog.z0x.ca/) | [@z0x](https://z0x.ca) | minimal | [→](https://git.z0x.ca/z0x/blog.z0x.ca/) |
-| [angelaytchan.net](https://angelaytchan.net/) | [@wispyplant](https://github.com/wispyplant) | portfolio, art | [→](https://github.com/wispyplant/wispyplant.github.io) |
-| [kaezr.xyz](https://kaezr.xyz/) | [@kaezrr](https://github.com/kaezrr) | minimal, portfolio | [→](https://github.com/kaezrr/webfolio) |
-| [worldwidewong](https://worldwidewong.vercel.app) | [@brendanwong-web](https://github.com/brendanwong-web) | portfolio, gallery | [→](https://github.com/brendanwong-web/worldwidewong) |
-| [bgajjala.dev](https://bgajjala.dev) | [@bgajjala8](https://github.com/bgajjala8) | minimal, blog | [→](https://github.com/bgajjala8/bgajjala.dev) |
-| [ankitz007.vercel.app](https://ankitz007.vercel.app) | [@ankitz007](https://github.com/ankitz007) | blog | [→](https://github.com/ankitz007/webfolio) |
-| [sadman.ca](https://sadman.ca) | [@sadmanca](https://github.com/sadmanca) | blog, media | [→](https://github.com/sadmanca/blogv3) |
-| [marcel-to.vercel.app](https://marcel-to.vercel.app) | [@Marcel-TO](https://github.com/Marcel-TO) | portfolio, docs | [→](https://github.com/Marcel-TO/marcel-to-website) |
-| [merox.dev](https://merox.dev) | [@meroxdotdev](https://github.com/meroxdotdev) | blog, devops, homelab | [→](https://github.com/meroxdotdev/merox) |
-| [Off by One](https://justoffbyone.com) | [@cduruk](https://github.com/cduruk) | engineering, blog | [→](https://github.com/cduruk/offbyone) |
-| [holywater.dev](https://holywater.dev) | [@holywater2372](https://github.com/holywater2372) | cybersecurity, blog | [→](https://github.com/holywater2372/holywater.dev) |
-| [theinfinull.com](https://theinfinull.com) | [@theinfinull](https://github.com/theinfinull) | dev, portfolio, blog | [→](https://github.com/theinfinull/portfolio) |
-## Features
-
-- [Astro](https://astro.build/)'s [Islands](https://docs.astro.build/en/concepts/islands/) architecture for selective hydration and client-side interactivity while maintaining fast static site rendering.
-- [shadcn/ui](https://ui.shadcn.com/) with [Tailwind](https://tailwindcss.com/) color conventions for automatic light and dark theme styling. Features accessible, theme-aware UI components for navigation, buttons, and more.
-- [Expressive Code](https://expressive-code.com/) for enhanced code block styling, syntax highlighting, and code block titles.
-- Blog authoring with [MDX](https://mdxjs.com/) for component-rich content and $\LaTeX$ math rendering via [KaTeX](https://katex.org/).
-- Astro [View Transitions](https://docs.astro.build/en/guides/view-transitions/) in <abbr title="Single Page Application">SPA</abbr> mode for smooth route animations.
-- SEO optimization with granular metadata and [Open Graph](https://ogp.me/) tag control for each post.
-- [RSS](https://en.wikipedia.org/wiki/RSS) feed and sitemap generation.
-- Subpost support for breaking long content into digestible parts and organizing related series.
-- Author profiles with a dedicated authors page and multi-author post support.
-- Project tags with a dedicated tags page for post categorization and discovery.
-- Custom Callout component variants for enhanced technical writing.
-
-### Technology stack
-
-This is a list of the various technologies used to build this template:
-
-| Category | Technology Name |
-| ---------- | ------------------------------------------------------------------------------------------ |
-| Framework | [Astro](https://astro.build/) |
-| Styling | [Tailwind](https://tailwindcss.com) |
-| Components | [shadcn/ui](https://ui.shadcn.com/) |
-| Content | [MDX](https://mdxjs.com/) |
-| Codeblocks | [Expressive Code](https://expressive-code.com/), [Shiki](https://github.com/shikijs/shiki) |
-| Graphics | [Figma](https://www.figma.com/) |
-| Deployment | [Vercel](https://vercel.com) |
-
-## Getting started
-
-1. Hit &ldquo;Use this template&rdquo;, the big green button on the top right, to create a new repository in your own GitHub account with this template.
-
-2. Clone the repository:
-
- ```bash
- git clone https://github.com/[YOUR_USERNAME]/[YOUR_REPO_NAME].git
- cd [YOUR_REPO_NAME]
- ```
+### Member card format:
-3. Install dependencies:
+Everything except name and avatar is optional.
- ```bash
- npm install
- ```
-
-4. Start the development server:
-
- ```bash
- npm run dev
- ```
-
-5. Open your browser and visit `http://localhost:1234` to get started. The following commands are also available:
-
- | Command | Description |
- | ------------------ | --------------------------------------------------------------- |
- | `npm run start` | Alias for `npm run dev` |
- | `npm run build` | Run type checking and build the project |
- | `npm run preview` | Previews the built project |
- | `npm run astro` | Run Astro CLI commands |
- | `npm run prettier` | Blanket format all files using [Prettier](https://prettier.io/) |
-
-### Site configuration
-
-Edit the `src/consts.ts` file to update your site's metadata, navigation links, and social links:
-
-```ts
-export const SITE: Site = {
- title: 'astro-erudite',
- description: // ...
- href: 'https://astro-erudite.vercel.app',
- featuredPostCount: 2,
- postsPerPage: 3,
-}
+```markdown
+---
+name: <Your name>
+pronouns: <Your pronouns>
+avatar: <Link to an avatar image>
+bio: <A quick, short bio>
+website: <Link to your personal website>
+github: <Link to your github profile>
+codeberg: <Link to your codeberg profile>
+linkedin: <Link to your linkedin profile>
+instagram: <Link to your instagram profile>
+mail: <You email address>
+---
-export const NAV_LINKS: SocialLink[] = [
- {
- href: '/blog',
- label: 'blog',
- },
- // ...
-]
+Detailed bio text. This is a really good space to introduce yourself.
-export const SOCIAL_LINKS: SocialLink[] = [
- {
- href: 'https://github.com/jktrn',
- label: 'GitHub',
- },
- // ...
-]
+This can be considerably longer than the `bio` field in the frontmatter.
```
-### Color palette
-
-Colors are defined in `src/styles/global.css` in [OKLCH format](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/oklch), using the [shadcn/ui](https://ui.shadcn.com/) convention:
-
-```css
-:root {
- --background: oklch(1 0 0);
- --foreground: oklch(0.145 0 0);
- --primary: oklch(0.205 0 0);
- --primary-foreground: oklch(0.985 0 0);
- --secondary: oklch(0.97 0 0);
- --secondary-foreground: oklch(0.205 0 0);
- --muted: oklch(0.97 0 0);
- --muted-foreground: oklch(0.556 0 0);
- --accent: oklch(0.97 0 0);
- --accent-foreground: oklch(0.205 0 0);
- --destructive: oklch(0.577 0.245 27.325);
- --border: oklch(0.922 0 0);
- --ring: oklch(0.708 0 0);
-}
-
-[data-theme='dark'] {
- /* ... */
-}
-```
+## Create a new form
-### Favicons
+- Create a file `my-form-id.md` in `src/content/forms/`.
+- See the sample in `src/content/forms/test.mdx` for more info.
-Favicons are generated using [RealFaviconGenerator](https://realfavicongenerator.net/). To adjust the favicons, replace the files in the `public/` directory (such as `favicon.ico`, `favicon.svg`, `apple-touch-icon.png`, etc.) with your own. After updating the favicon files, you'll also need to adjust the references in `src/components/Favicons.astro` to match your new favicon filenames and paths:
+## Create a new event entry
-```html
-<!-- Replace these with the generated meta tags -->
-<link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96" />
-<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
-<link rel="shortcut icon" href="/favicon.ico" />
-<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
-<meta name="apple-mobile-web-app-title" content="astro-erudite" />
-<link rel="manifest" href="/site.webmanifest" />
-```
+- Create a file `event-name.md` in `src/content/events/`.
+- See the sample in `src/content/events/event_zero.mdx` for more info.
-## Adding content
-### Blog posts
+## Create a blog post
-Add new blog posts as MDX files in the `src/content/blog/` directory. Use the following frontmatter structure:
+- Create a file `post-name.md` in `src/content/blog/`.
+- See the sample in `src/content/blog/shortening-of-the-way/index.mdx` for more info.
+- Remember to remove `draft: true` in the frontmatter before publishing.
-```yml
----
-title: 'Your Post Title'
-description: 'A brief description of your post!'
-date: 2024-01-01
-tags: ['tag1', 'tag2']
-image: './image.png'
-authors: ['author1', 'author2']
-draft: false
----
-```
+## Build
-The blog post schema is defined as follows:
+You need the following installed to get started:
-| Field | Type (Zod) | Requirements | Required |
-| ------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
-| `title` | `string` | Should be ≤60 characters. | Yes |
-| `description` | `string` | Should be ≤155 characters. | Yes |
-| `date` | `coerce.date()` | Must be in `YYYY-MM-DD` format. | Yes |
-| `order` | `number` | Sort order for subposts with the same `date`. Defaults to `0` if not provided. | Optional |
-| `image` | `image()` | Should be exactly 1200px &times; 630px. | Optional |
-| `tags` | `string[]` | Preferably use kebab-case for these. | Optional |
-| `authors` | `string[]` | If the author has a profile, use the id associated with their Markdown file in `src/content/authors/` (e.g. if their file is named `jane-doe.md`, use `jane-doe` in the array). | Optional |
-| `draft` | `boolean` | Defaults to `false` if not provided. | Optional |
+- [Node.js](https://nodejs.org/en)
+- [pnpm](https://pnpm.io) or [bun](https://bun.sh)
-### Authors
-Add author information in `src/content/authors/` as Markdown files. A file named `[author-name].md` can be associated with a blog post if `"author-name"` (the id) is added to the `authors` field:
+### Clone and set up the repo
-```yml
----
-name: 'enscribe'
-pronouns: 'he/him'
-avatar: 'https://gravatar.com/avatar/9bfdc4ec972793cf05cb91efce5f4aaaec2a0da1bf4ec34dad0913f1d845faf6.webp?size=256'
-bio: 'd(-_-)b'
-website: 'https://enscribe.dev'
-twitter: 'https://twitter.com/enscry'
-github: 'https://github.com/jktrn'
-mail: 'jason@enscribe.dev'
----
+```bash
+git clone https://codeberg.org/fosscet/website-src
+cd website-src
+pnpm i # or bun install
```
-The author schema is defined as follows:
-
-| Field | Type (Zod) | Requirements | Required |
-| ---------- | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- |
-| `name` | `string` | n/a | Yes |
-| `pronouns` | `string` | n/a | Optional |
-| `avatar` | `string.url()` or `string.startsWith('/')` | Should be either a valid URL or a path starting with `/`. Preferably use [Gravatar](https://en.gravatar.com/site/implement/images/) with the `?size=256` size parameter. | Yes |
-| `bio` | `string` | n/a | Optional |
-| `mail` | `string.email()` | Must be a valid email address. | Optional |
-| `website` | `string.url()` | Must be a valid URL. | Optional |
-| `twitter` | `string.url()` | Must be a valid URL. | Optional |
-| `github` | `string.url()` | Must be a valid URL. | Optional |
-| `linkedin` | `string.url()` | Must be a valid URL. | Optional |
-| `discord` | `string.url()` | Must be a valid URL. | Optional |
-
-> [!TIP]
-> You can add as many social media links as you want, as long as you adjust the schema! Make sure you also support the new field in the `src/components/SocialIcons.astro` component.
+### Run the dev server
-### Projects
-
-Add projects in `src/content/projects/` as Markdown files:
-
-```yml
----
-name: 'Project A'
-description: 'This is an example project description! You should replace this with a description of your own project.'
-tags: ['Framework A', 'Library B', 'Tool C', 'Resource D']
-image: '/static/1200x630.png'
-link: 'https://example.com'
-startDate: '2024-01-01'
-endDate: '2024-01-01'
----
+```bash
+pnpm run dev # or bun run dev
```
-The project schema is defined as follows:
-
-| Field | Type (Zod) | Requirements | Required |
-| ------------- | --------------- | --------------------------------------- | -------- |
-| `name` | `string` | n/a | Yes |
-| `description` | `string` | n/a | Yes |
-| `tags` | `string[]` | n/a | Yes |
-| `image` | `image()` | Should be exactly 1200px &times; 630px. | Yes |
-| `link` | `string.url()` | Must be a valid URL. | Yes |
-| `startDate` | `coerce.date()` | Must be in `YYYY-MM-DD` format. | Optional |
-| `endDate` | `coerce.date()` | Must be in `YYYY-MM-DD` format. | Optional |
-
-## License
-
-This project is open source and available under the [MIT License](LICENSE).
-
----
-
-### Star history
-
-<a href="https://star-history.com/#jktrn/astro-erudite&Date">
- <picture>
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=jktrn/astro-erudite&type=Date&theme=dark" />
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=jktrn/astro-erudite&type=Date" />
- <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=jktrn/astro-erudite&type=Date" />
- </picture>
-</a>
-
----
-
-Built with &hearts; by [enscribe](https://enscribe.dev)!
+### Build the site
-[Stargazers]: https://img.shields.io/github/stars/jktrn/astro-erudite?color=fafafa&logo=github&logoColor=fff&style=for-the-badge
-[License]: https://img.shields.io/github/license/jktrn/astro-erudite?color=0a0a0a&logo=github&logoColor=fff&style=for-the-badge
+```bash
+pnpm run build # or bun run build
+```