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.