UniTalk is a language learning exchange web application designed for Manchester Metropolitan University students. It provides a platform for students to connect with peers who are native speakers of languages they want to learn, while offering help with languages they speak fluently.
- User Profiles with native and target language preferences
- Language Proficiency Levels to match appropriate partners
- Interest-based Matching to find compatible language partners
- Real-time Messaging with grammar correction tools
- Connection Management to build your language exchange network
- Frontend: Next.js 14 with App Router, React 18, TypeScript
- UI: HeroUI components, TailwindCSS for styling
- State Management: Zustand
- Form Handling: React Hook Form with Zod validation
- Authentication: NextAuth.js v5 (Auth.js)
- Database: PostgreSQL with Prisma ORM
- Real-time functionality: Pusher for real-time messaging
- Image Hosting: Cloudinary
- Testing: Jest with React Testing Library
First, run the development server:
npm run dev
# or
npm run build
# then
npm startOpen http://localhost:3000 with your browser to see the result.
The application uses PostgreSQL. There are two databases:
unitalk: Main development databaseunitalk_test: Separate test database for running tests
# Reset and seed the main development database
npm run db:reset
# Seed the main database (assumes migrations already applied)
npm run db:seed
# Setup the test database (reset and migrate)
npm run test:db:setupTests are configured to run on the separate unitalk_test database to ensure they don't affect the development data.
# Run all tests
npm run test
# Run specific test file
npm run test tests/db/models.test.ts
# Run tests in watch mode
npm run test:watchTo learn more about the technologies used in this project: