A full-stack social media platform built with Next.js 14, TypeScript, and PostgreSQL.
Medially is a social media application with a focus on type safety, clean data modeling, and a responsive UI. Built using the Next.js 14 App Router with React Server Components, Prisma ORM for the database layer, and shadcn/ui for the component library.
- Authentication — Session-based user auth with protected routes
- Posts & Feed — Create, read, and interact with posts in a real-time feed
- Responsive UI — Mobile-first design using Tailwind CSS and shadcn/ui components
- Type-safe codebase — End-to-end TypeScript with strict mode enabled
- Database layer — Prisma ORM with schema-first data modeling on PostgreSQL
- Automated setup —
start-db.shscript handles database initialization and migrations
| Layer | Technology |
|---|---|
| Framework | Next.js 14 (App Router) |
| Language | TypeScript |
| Database | PostgreSQL |
| ORM | Prisma |
| UI Components | shadcn/ui |
| Styling | Tailwind CSS |
Medially/
├── prisma/
│ └── schema.prisma # Database schema
├── public/ # Static assets
├── src/
│ ├── app/ # Next.js App Router pages & layouts
│ ├── components/ # Reusable UI components
│ └── lib/ # Utilities, DB client, auth helpers
├── start-db.sh # DB init & migration script
├── next.config.ts
└── tsconfig.json
- Node.js 18+
- PostgreSQL running locally (or a connection string)
# Clone the repo
git clone https://github.com/tijaruS/Medially.git
cd Medially
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env
# Edit .env with your DATABASE_URL and auth secrets
# Initialize the database
bash start-db.sh
# Run the development server
npm run devOpen http://localhost:3000 in your browser.
DATABASE_URL="postgresql://user:password@localhost:5432/medially"
NEXTAUTH_SECRET="your-secret"
NEXTAUTH_URL="http://localhost:3000"Surajit Das — @tijaruS