Anonymous Community App for College Students
- Anonymous Interaction: Post, comment, and reply without revealing your real identity.
- College-Verified Community: Exclusively for students with a valid
@oriental.ac.inemail address. - Secure Authentication: Custom JWT-based authentication flow with an OTP (One-Time Password) verification system.
- Content Moderation: Built-in filter to detect and block inappropriate content in posts and comments.
- Replies & Likes: Supports nested comment replies and liking comments.
- Theming: Dark and light mode support.
- Real-time Notifications (Planned): Functionality to receive push notifications for interactions.
# Clone the repo
$ git clone https://github.com/NalinDalal/blind-app.git
$ cd blind-app
# Install dependencies
$ npm install
# Setup environment variables
$ cp .env.example .env.local
# Edit .env.local with your PostgreSQL and SendGrid credentials
# Setup database
$ npx prisma generate
$ npx prisma db push
$ npm run db:seed
# Start development server
$ npm run dev- Framework: Next.js (App Router)
- Language: Typescript
- Backend: Next.js API Routes
- Database: PostgreSQL with Prisma ORM
- Authentication:
bcryptjs- password hashingOTPauth- TOTP/OTP generation & verificationjsonwebtoken- issue and verify JWT access & refresh tokens
- State Management:
- Client State: Redux Toolkit (for auth state)
- Server State: TanStack Query (for data fetching, caching, and mutations)
- UI: React 19, TailwindCSS
- Form Handling: React Hook Form with Zod for validation
- Email Service: SendGrid
- Deployment: Docker
The following diagram illustrates the overall architecture of Blind App:
flowchart TD
subgraph Client["📱 Client (Web App)"]
U[User Interface]
AuthUI[Login & Verification Screen]
FeedUI[Discussion Feed]
PostUI[Post/Comment Screen]
NotifUI[Notification Panel]
end
subgraph Backend["☁️ Backend (Next.js API Routes)"]
API[API Gateway]
AuthService[Authentication Service]
AnonService[Anonymity Layer]
FeedService[Feed & Post Service]
NotifService[Notification Service]
ModerationService[Content Moderation]
end
subgraph Verification["🎓 Student Verification"]
EmailCheck[College Email Verification]
end
subgraph DataStore["🗄️ Data Stores (PostgreSQL)"]
UserDB[(User Database)]
PostDB[(Posts & Comments DB)]
AnonMapDB[(Anon Identity Mapping)]
NotifDB[(Notification Store)]
LogDB[(Audit Logs)]
end
subgraph Ext["🌐 External Services"]
EmailAPI[Email/OTP Provider]
end
%% Client connections
U --> AuthUI
U --> FeedUI
U --> PostUI
U --> NotifUI
%% Flow: Auth & Verification
AuthUI --> API --> AuthService
AuthService --> Verification
Verification --> EmailCheck --> EmailAPI
AuthService --> UserDB
%% Flow: Anonymity
PostUI --> API --> AnonService
AnonService --> AnonMapDB
AnonService --> FeedService
%% Flow: Feed & Posts
FeedUI --> API --> FeedService
FeedService --> PostDB
%% Flow: Moderation
FeedService --> ModerationService
ModerationService --> LogDB
%% Flow: Notifications
NotifService --> NotifDB
API --> NotifUI
NotifService --> API
We welcome contributions! Please read our Contributing Guide and Roadmap for details.
This project is licensed under the MIT License. See LICENSE for details.