Skip to content
/ Tutorr Public

A dynamic freelancing marketplace where students and teachers seamlessly connect, collaborate, and schedule one-on-one learning sessions.

Notifications You must be signed in to change notification settings

Tiru-99/Tutorr

Repository files navigation

Tutorr

Introduction

Tutorr is a marketplace-style freelancing platform that connects teachers and students, enabling them to discover, connect, and schedule sessions seamlessly.


Built with a modern monorepo architecture using Turborepo, Tutorr ensures scalability, modularity, and lightning-fast builds across multiple apps and packages.


Tech Stack

Layer Tech
Framework Next.js, Express.js
Database PostgreSQL with Prisma ORM
Message Queue Redis, BullMQ
Object Storage Cloudinary
Authentication Built from scratch
UI TailwindCSS + ShadCN/UI + TypeScript
Monorepo Tooling Turborepo
Deployment Vercel (web), EC2 (bgsvc) , EC2(worker-cron)

Project Structure

The Tutorr monorepo is organized using Turborepo, ensuring modularity and separation of concerns between different services, packages, and shared logic.

tutorr/
├── apps/
│ ├── apps/ # Next.js frontend application (main web app)
│ ├── bgsvc/ # Background services , cron jobs and delayed notification service 
│ └── worker-cron/ # Worker to process bookings 
│
├── packages/
│ ├── common/ # Shared types, constants, and utility functions
│ ├── db/ # Prisma ORM schema and database client
│ ├── emails/ # Email templates and transactional mail logic
│ └── <default-folder>/ # Other shared resources or internal tooling
│
├── turbo.json # Turborepo configuration
├── package.json # Root dependency and script management
├── pnpm-workspace.yaml # Defines monorepo workspace structure
└── README.md # Project documentation

Setup Instructions

Follow these steps to set up Tutorr locally on your system.


Clone the Repository

git clone https://github.com/Tiru-99/Tutorr.git
cd tutorr

Add Environment Variables

You need to create .env files in the following locations:

tutorr/
├── .env                # Root-level environment variables
├── apps/
│   ├── .env            # For frontend/backend app configurations
│
└── packages/
    └── db/
        └── .env        # Database configuration

Sample .env Configuration

# Env for apps/web folder
JWT_SECRET=
NEXT_PUBLIC_CLOUD_NAME=
NEXT_PUBLIC_CLOUDINARY_API_KEY= 
NEXT_PUBLIC_CLOUDINARY_API_SECRET=
REDIS_HOST ="localhost"
REDIS_PORT =6379
NEXT_PUBLIC_BACKEND_URL ="http://localhost:8001"
NEXT_PUBLIC_RAZORPAY_KEY =
RAZORPAY_SECRET_KEY=
NEXT_PUBLIC_GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
RAZORPAYX_ACCOUNT_NUMBER=
RAZORPAYX_SECRET =
RAZORPAYX_KEY_ID =


# Env for root

REDIS_URL="I am using upstash redis "
REDIS_PORT =6379
RAZORPAY_KEY=
RAZORPAY_SECRET_KEY=
GMAIL_PASS =
GMAIL_USER =
REDIS_HOST ="localhost"
NODE_ENV = "development" # or production if deploying

 
#Env for packages/db

DATABASE_URL="enter your own url " #if using docker use docker based url

Installing dependencies and running the project

# Run this command ar root 
npm install
npm run dev

License

This project is licensed under the MIT License — see the LICENSE file for details.

About

A dynamic freelancing marketplace where students and teachers seamlessly connect, collaborate, and schedule one-on-one learning sessions.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages