The public-facing website for URAI — the AI student association at the University of Regensburg and OTH Regensburg.
Built with React, TypeScript, and Tailwind CSS. Deployed automatically via Vercel on every merge to main.
| Layer | Technology |
|---|---|
| Framework | React 18 + TypeScript |
| Build | Vite 5 (SWC) |
| Styling | Tailwind CSS 3 + shadcn/ui (Radix primitives) |
| Routing | React Router DOM 6 |
| Server State | TanStack Query 5 |
| Forms | React Hook Form + Zod |
| Testing | Vitest + Testing Library |
| Deployment | Vercel (with serverless functions) |
| Font | Inter (self-hosted variable font) |
urai-website/
├── src/
│ ├── components/ Section components (HeroSection, Footer, etc.)
│ │ └── ui/ shadcn/ui primitives (do not edit manually)
│ ├── pages/ Route-level pages
│ ├── hooks/ Custom hooks (parallax, particles, mobile detection)
│ ├── lib/ Utilities
│ ├── assets/ Images, logos, sponsor assets
│ ├── App.tsx Route definitions
│ ├── main.tsx Entry point
│ └── index.css Design tokens + Tailwind directives
├── api/ Vercel serverless functions
├── public/ Favicons, fonts, PWA manifest
└── vercel.json SPA rewrite rules
| Path | Page |
|---|---|
/ |
Landing page |
/member |
Membership |
/impressum |
Legal notice |
/privacy |
Data privacy |
* |
404 |
# Install dependencies
npm install
# Start dev server (localhost:8080)
npm run dev
# Production build
npm run build
# Run tests
npm test
# Lint
npm run lintRequired only for the contact form serverless function (api/send-email.ts):
| Variable | Required | Description |
|---|---|---|
MAILGUN_API_KEY |
Yes | Mailgun API key |
MAILGUN_DOMAIN |
Yes | Mailgun sending domain |
CONTACT_EMAIL |
No | Recipient address (defaults to contact@urai-group.com) |
These are configured in the Vercel dashboard, not committed to the repo.
| Concern | Convention |
|---|---|
| Site content language | German |
| Code and comments | English |
| Components | PascalCase named exports |
| Hooks | use- prefix, kebab-case filenames |
| Pages | Lowercase filenames |
| Colors | HSL via CSS custom properties |
| Commits | Conventional Commits |
| Path alias | @src/ resolves to ./src/ |
- Fork this repository
- Create a feature branch (
git checkout -b feat/my-change) - Commit using conventional commits
- Open a pull request against
main
Merged changes are automatically deployed by Vercel.
Internal project of URAI e.V.
