This repository contains the source code for the main website of FOSS Cell TKMCE. The production build is deployed here: https://tkmfoss.github.io.
We welcome contributions from everyone! Whether it's bug fixes, improvements, or suggestions, feel free to get involved. And it also doesn't matter if you are a part of the club or not!
- First point: you can contribute.
- All types of contributions are welcome including criticisms. However, it will be reviewed thoroughly before considering / merging.
- Sign your commits to improve traceability and ensure the integrity of contributions.
- If you're a collaborator or a member of the organization, don't fork, make branches instead.
- Commit messages should be descriptive and concise. While we don't strictly follow conventional commits, please keep the message clear for future reference.
- Discuss important stuff before doing something critical or stupid.
- Don't try to push to
main
branch unless you are the owner/manager of the repository. - Add actual and proper comments if you're doing something hacky or wacky.
- The website is built using Next.js version 15 and is written in TypeScript.
- Static contents are generated from MDX files residing in
data
directory. - Code formatting is done via the NPM script
format
which invokes prettier. - Linting is done by Next.js through eslint. No additional configuration/modification added yet.
- PNPM is used as the package manager and has no intention of changing it for the forseeable future.
- References and credits are given and must be given for the snippets that's not yours. Explanations must be given in most cases and references must be linked if it's a public website.
- The only reason MDX is used is because of the native support it has in Next.js. Learn more: https://nextjs.org/docs/app/building-your-application/configuring/mdx.
- As of February 2025, the website is fully static.
- All static data content, except for assets like images, should reside in the
/data
directory. - The content of the events (and maybe blogs, in the future) are written in MDX, which is just a fancy variant of Markdown with some extended capabilities that aren't put to use in the context of this website.
- Images are categorized inside the
/public
directory. Where/public/images
is for the images used as actual assets for the whole website, and other named directories such as/public/events
,/public/people
are for that specific type of content. - People data can be found inside
/data/people.ts
. - Header announcement bar can be hidden by setting
announcement
tonull
inside/data/announcement.tsx
, or can be modified into literally anything by editing that. - No alumni data is added yet.
- Events data is split yearwise for easier management and of course, for same slugs for the same events conducted in the coming years.
Finally, try to make everything perfect & better.
Make sure you have Node.js (v22) and PNPM installed.
Once you have cloned the repository and go into it, run pnpm install
to install the dependencies.
You can now run
pnpm run dev
to view the website locally in your browser.
- To ensure you have done everything correctly, run
pnpm run check
before committing / pushing. This checks the formatting and does the linting. - Or to lint,
pnpm run lint
. - To format the whole thing,
pnpm run format
.