The official website for Iowa State University Vietnamese Student Association, featuring event management and member resources.
- Modern Design: Built with Next.js 15, TypeScript, and Tailwind CSS
- ISU Branding: Cardinal red and gold theme throughout
- Responsive: Works perfectly on all devices
- Event Management: Browse and RSVP to upcoming events
- Photo Gallery: Relive memories from past events
- Admin Dashboard: Comprehensive admin panel for managing events and content
- Performance Optimized: Static generation, lazy loading, and image optimization
- SEO Ready: Meta tags and structured data for better search visibility
- Framework: Next.js 15.5.3 (App Router)
- Language: TypeScript 5
- Styling: Tailwind CSS 3.4.17
- UI Components: Custom components with Framer Motion animations
- Icons: Lucide React & React Icons
- State: Zustand 5.0.8
- Forms: React Hook Form 7.62.0
- Validation: Zod 4.1.8
- Linting: ESLint 9
- Formatting: Prettier
- Testing: Jest with React Testing Library
- Package Manager: npm
- Build Tool: Next.js built-in bundler with Turbopack support
- Node.js 18+
- npm or yarn package manager
- Git
- Clone the repository:
git clone https://github.com/isuvsa/website.git
cd isu-vsa-website- Install dependencies:
npm install- Set up environment variables:
cp .env.example .env.localEdit .env.local and add your environment variables (see Environment Variables section)
- Run the development server:
npm run dev- Open http://localhost:3000 in your browser
Create a .env.local file with the following variables:
# Instagram Integration (Optional)
NEXT_PUBLIC_INSTAGRAM_ACCESS_TOKEN=your_token_here
NEXT_PUBLIC_INSTAGRAM_ACCOUNT_ID=your_account_id_here
# Add other API keys as needednpm run build
npm startFor production deployment, see the Deployment Guide.
isu-vsa-website/
βββ app/ # Next.js app directory
β βββ about/ # About pages
β βββ admin/ # Admin dashboard
β β βββ events/ # Event management
β β βββ content/ # Content management
β βββ events/ # Events pages
β βββ gallery/ # Photo/video gallery
β βββ contact/ # Contact page
βββ components/ # Reusable components
β βββ navigation/ # Navigation components
βββ lib/ # Utility functions
βββ data/ # Data files and mock data
βββ public/ # Static assets
The color scheme is defined in tailwind.config.ts:
- Cardinal Red:
#CE1126 - Gold:
#F1BE48 - Deep Red:
#9B1C31 - Cream:
#FFF8E7 - Charcoal:
#2C2A29
- Headers: Montserrat
- Body: Open Sans
- Accent: Playfair Display
The website is optimized for deployment on Vercel with zero configuration.
-
Quick Deploy
- Push to GitHub
- Import to Vercel
- Deploy
-
Custom Domain
- Add domain in Vercel dashboard
- Update DNS records
See the full Deployment Guide and Vercel Deployment Guide for detailed instructions.
npm run dev # Start development server
npm run build # Build for production (includes sitemap generation)
npm run start # Start production server
npm run lint # Run ESLint
npm run typecheck # Type check with TypeScript
npm run format # Auto-format code with Prettier
npm run format:check # Check code formatting
npm run test # Run Jest tests
npm run test:watch # Run tests in watch mode
npm run test:coverage # Run tests with coverage report
npm run generate-sitemap # Generate sitemap.xml- TypeScript for type safety
- ESLint for code quality
- Prettier for code formatting
- Tailwind CSS for styling
- Follow existing patterns in the codebase
npm run build
npm run startAccess the admin dashboard at /admin to manage:
- Events (create, edit, delete)
- Content updates
- Board member information
Edit /app/about/board/page.tsx and update the executiveBoard and committeeChairs arrays.
- Via Admin Dashboard: Navigate to
/admin/events - Via Code: Edit
/data/events.tsand add new events to the events array
Edit /data/navigation.ts to update navigation links.
- Board photos:
/public/images/board/(400x400px, firstname-lastname.jpg) - Event images:
/public/images/events/ - Gallery photos:
/public/images/gallery/
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Test your changes locally (
npm run build && npm run start) - Run linting (
npm run lint) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Write clean, readable code
- Follow TypeScript best practices
- Run
npm run typecheckandnpm run lintbefore committing - Format code with
npm run format - Test thoroughly before submitting PR (
npm run test) - Update documentation as needed
- Keep commits atomic and meaningful
-
Build Failures
- Run
npx tsc --noEmitto check TypeScript errors - Check for missing dependencies in package.json
- Clear
.nextfolder and rebuild
- Run
-
Development Server Issues
- Delete
node_modulesandpackage-lock.json - Run
npm installfresh - Check Node.js version (18+ required)
- Clear
.nextcache folder
- Delete
-
Type Checking Issues
- Run
npm run typecheckto check for TypeScript errors - Check
tsconfig.jsonfor proper configuration - Delete
tsconfig.tsbuildinfoand rebuild
- Run
-
Game Not Loading
- Ensure Phaser.js is properly imported
- Check browser console for errors
- Verify game assets are in
/publicfolder
This project is licensed under the MIT License.
ISU VSA - [email protected]
Website: https://isuvsa.org
Instagram: @isuvsa
- Iowa State University
- Vietnamese Student Association National
- All VSA members and supporters
- Next.js and Vercel for the amazing framework
- Phaser.js for the game engine
- All contributors and maintainers