Custom e-commerce and art platform showcasing Oliver's artwork, music, and interactive experiences.
- Node.js 18+ and npm
- PostgreSQL database (or use SQLite for development)
- Stripe account (for payments functionality)
- Optional: AWS S3 or Cloudinary (for file storage)
- Clone the repository
git clone https://github.com/stimutak/multiPassLabs.git
cd multiPassLabs- Install dependencies
npm install- Set up environment variables
cp .env.example .envEdit .env with your configuration:
- Database connection string
- NextAuth secret and URL
- Stripe API keys
- Storage credentials (AWS S3 or Cloudinary)
- Email service credentials
- Set up the database
npm run db:push # Push schema to database
npm run db:seed # Optional: seed with test data- Start development server
npm run devVisit http://localhost:3002
The site will display a loading screen with animated rings and then redirect to /en for English.
- Next.js 15.4.5 - React framework with App Router
- React 19.1.1 - UI library
- TypeScript 5.9.2 - Type safety
- Tailwind CSS 3.4.17 - Utility-first CSS (Note: v4 not compatible)
- @tailwindcss/forms - Form styling
- @tailwindcss/typography - Typography plugin
- @reduxjs/toolkit - State management
- Prisma 6.13.0 - Database ORM
- next-intl 4.3.4 - Internationalization
- @radix-ui/react-slot - Component composition
- class-variance-authority - Variant management
- clsx & tailwind-merge - Class utilities
- next-auth 4.24.11 - Authentication
- Stripe 18.4.0 - Payment processing
- Default port: 3002 (configurable in package.json)
- If port is in use, kill the process:
lsof -ti:3002 | xargs kill -9
- Must use Tailwind CSS v3 (v4 has breaking changes)
- PostCSS config uses standard
tailwindcssplugin
- Async params in layouts require proper handling
- Server components use
getTranslationsinstead ofuseTranslations
multiPassLabs/
βββ app/ # Next.js 14 App Router
β βββ [locale]/ # Internationalized routes
β βββ api/ # API routes
βββ components/ # Reusable components
βββ lib/ # Core utilities
βββ store/ # Redux store
βββ styles/ # Global styles
βββ locales/ # Translation files
βββ prisma/ # Database schema
βββ public/ # Static assets
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production servernpm run lint # Run ESLint
npm run format # Format with Prettier
npm run typecheck # TypeScript type checkingnpm run test # Run unit tests
npm run test:watch # Run tests in watch mode
npm run e2e # Run end-to-end testsnpm run db:push # Push schema to database
npm run db:migrate # Run migrations
npm run db:studio # Open Prisma StudioThe platform supports multiple languages (currently English and Spanish). All text must use translation keys:
const t = useTranslations('common');
return <Button>{t('submit')}</Button>;- Art Gallery: Showcase artwork with immersive viewing experience
- Music Platform: Audio playback and reactive visualizations
- E-commerce: Full shopping cart and Stripe checkout
- Interactive Experiences: Three.js and p5.js integrations
- Admin Panel: Content management for products and orders
- Internationalization: Multi-language support
- Authentication: Secure user accounts with NextAuth.js
- Responsive Design: Mobile-first approach
- All user input is sanitized
- SQL queries use Prisma ORM (parameterized)
- Authentication required for protected routes
- Environment variables for sensitive data
- Stripe webhooks verification
- CSRF protection enabled
- CLAUDE.md - AI assistant guidelines and project constraints
- AGENTS.md - Specialized AI agent documentation
- Next.js Documentation
- Prisma Documentation
- Stripe Documentation
The project uses Jest for unit tests and Playwright for E2E tests:
npm run test # Run all unit tests
npm run test:coverage # Generate coverage report
npm run e2e # Run E2E tests
npm run e2e:ui # Run E2E tests with UISee .env.example for the complete list of required environment variables.
-
Vercel (Recommended)
- Connect GitHub repository
- Configure environment variables
- Deploy automatically on push
-
Railway
- Deploy with PostgreSQL database
- Configure environment variables
- Automatic deployments
- Read CLAUDE.md for coding guidelines
- Create a feature branch
- Make changes following project constraints
- Ensure all tests pass
- Submit pull request
- Never create "enhanced" versions of files
- Modify existing files instead of creating duplicates
- All text must use translation keys
- Test on mobile devices
- Follow security best practices
ISC License - See LICENSE file for details
For issues and questions:
- Create an issue on GitHub
- Check CLAUDE.md for development guidelines
- Review AGENTS.md for AI agent usage
Built with β€οΈ for showcasing art, music, and interactive experiences.