This repository contains the front-end for the MUT Tech Club website, built with Nuxt 3 and TypeScript. It is designed as a pnpm workspace project and leverages Nuxt modules like @nuxt/content for markdown/content, @pinia/nuxt for state management, and TailwindCSS for styling.
π The code in this workspace is located under the
ui/directory β all commands below should be run from that folder unless otherwise noted.
The project follows the standard Nuxt 3 directory conventions, with some custom folders for organization:
ui/
βββ app/
β βββ assets/ # static assets (CSS, images, etc.)
β βββ components/ # Vue components (organized by feature/section)
β βββ composables/ # composable utilities (useApi, useSeoPage, etc.)
β βββ layouts/ # Nuxt layouts (default.vue)
β βββ pages/ # Pages get turned into routes automatically
β βββ plugins/ # Nuxt plugins (client-only validators, etc.)
β βββ stores/ # Pinia stores (auth, state)
β βββ utils/ # general helpers (clipboard, constants, links)
βββ content/ # Markdown/YAML content for static pages
β βββ about.yml
β βββ blog.yml
β βββ index.yml
β βββ projects.yml
β βββ speaking.yml
β βββ blog/ # individual markdown posts
β βββ projects/ # project definitions in YAML
βββ public/ # public static assets (robots.txt, hero images)
βββ package.json # npm scripts and dependencies
βββ tsconfig.json # TypeScript configuration
βββ nuxt.config.ts # Nuxt configuration file
βββ eslint.config.mjs # ESLint settings
βββ ... other config files (pnpm-workspace.yaml, README.md, etc.)
app/pages/: Each.vuefile is automatically routed; nested directories create nested routes.app/components/: Reusable UI pieces split into subfolders (landing,usagecards,cool, etc.).content/: Holds structured data (YAML) and blog posts (Markdown). Used by@nuxt/contentfor dynamic content.app/stores/: Pinia stores used for global state and authentication.app/plugins/: Client-side plugins such as AOS for scroll animations and persisted Pinia state.
- Node.js (v18+ recommended)
- pnpm (v8+) β the repo uses
pnpm@10.29.3as specified inpackage.json
# install pnpm globally if you don't have it
npm install -g pnpmRun the following from the ui/ directory:
pnpm installThis will read pnpm-lock.yaml and install all required packages.
pnpm devβ Start the development server with hot reloadpnpm buildβ Compile production assetspnpm previewβ Serve the built project locally for testingpnpm lintβ Run ESLint over the codebasepnpm lint:fixβ Run ESLint and auto-fix issues when possiblepnpm typecheckβ Run Nuxt's TypeScript checker
Example:
pnpm dev
# open http://localhost:3000 in your browserπ The
postinstallscript runsnuxt prepare, which generates necessary files after package install.
- nuxt.config.ts: Central Nuxt configuration (modules, meta tags, runtime config, etc.).
- tsconfig.json: Enables path aliases (e.g.,
~/for root) and strict typing. - eslint.config.mjs: ESLint rules extend Nuxt's recommended presets.
You can adjust TailwindCSS settings in tailwind.config.js if present (not shown above).
Major runtime libraries used:
nuxt& related modules (@nuxt/content,@nuxt/image,@pinia/nuxt, etc.)tailwindcssfor utility-first stylingpiniafor state management@vueuse/nuxtfor useful Vue composition utilitiesaos&motion-vfor animationsbetter-sqlite3(likely for some backend or server-side feature)
Development dependencies include TypeScript, ESLint, vue-tsc, and Nuxt ESLint plugins.
The content/ folder holds YAML definitions for the homepage, about page, projects, blog index, etc. Blog posts are written in markdown. The Nuxt Content module loads this data at build or runtime and makes it available via the $content API.
Add new posts or pages by creating files under the appropriate subdirectory and updating any related navigation logic.
- Development:
cd ui pnpm install pnpm dev - Build for production:
pnpm build pnpm preview # optional local test - Deploy: Copy the generated
.outputdirectory (Nuxt 3 default) to your hosting environment or use a platform that supports Nuxt (Vercel, Netlify, etc.).
π‘ For continuous deployment, ensure your CI runs
pnpm install && pnpm buildin theuidirectory.
- Fork the repo and create a feature branch.
- Install dependencies with
pnpm installin theuifolder. - Add components, pages, or content as needed.
- Run
pnpm lintandpnpm typecheckbefore committing. - Submit a pull request describing your changes.
Feel free to reach out to the maintainers for help or β¦
This README was generated based on the current project layout and configuration.