A modern social media platform built with Flutter and Express.js, designed for the KIIT community.
To be eligible for MLSA X HACKTOBERFEST: And register here: https://register.mlsakiit.com/ Star this repo: https://github.com/keploy/keploy
KLink is a full-stack social media application featuring user authentication, posts, comments, and a follow system. Built with Flutter for the frontend and Express.js with PostgreSQL for the backend, it provides a seamless social networking experience.
-
Authentication System
- Email/password registration and login (restricted to @kiit.ac.in domain)
- Google OAuth integration
- Session management with JWT tokens
- Deep link handling for OAuth callbacks
-
Posts & Interactions
- View post feed
- Like/unlike posts
- Delete own posts
- Pull-to-refresh functionality
-
Social Features
- Follow/unfollow users
- View user profiles with statistics
- Followers and following counts
- User-specific post feeds
-
Modern UI/UX
- Dark theme design
- Bottom navigation (Home, Search, Profile)
- Loading states and error handling
- Responsive layouts
- Framework: Flutter (^3.9.2)
- State Management: Provider
- Authentication: Supabase Flutter SDK
- HTTP Client: http package
- Deep Linking: app_links package
- Local Storage: shared_preferences
- Framework: Express.js
- Database: PostgreSQL (Supabase)
- ORM: Prisma
- Authentication: Supabase Auth
- Security: Helmet.js, CORS, Rate Limiting
- Validation: Joi
KLink/
├── frontend/ # Flutter mobile application
│ ├── lib/
│ │ ├── config/ # Configuration files
│ │ ├── models/ # Data models
│ │ ├── providers/ # State management
│ │ ├── screens/ # UI screens
│ │ ├── services/ # API services
│ │ └── widgets/ # Reusable widgets
│ └── android/ios/web/ # Platform-specific code
│
├── backend/ # Express.js API server
│ ├── src/
│ │ ├── controllers/ # Request handlers
│ │ ├── middleware/ # Express middleware
│ │ ├── routes/ # API routes
│ │ └── config/ # Configuration
│ ├── prisma/ # Database schema
│ └── database/ # SQL scripts
│
└── docs/ # Documentation (if needed)
- Flutter SDK (^3.9.2)
- Node.js (v16+)
- PostgreSQL (or Supabase account)
- Android Studio / Xcode (for mobile development)
- Navigate to backend directory:
cd backend- Install dependencies:
npm install- Configure environment variables (copy
.env.exampleto.env):
PORT=3000
SUPABASE_URL=your_supabase_url
SUPABASE_ANON_KEY=your_anon_key
SUPABASE_SERVICE_ROLE_KEY=your_service_role_key
DATABASE_URL=your_database_url
DIRECT_URL=your_direct_url
ALLOWED_EMAIL_DOMAIN=@kiit.ac.in- Setup database:
npx prisma generate
npx prisma db push- Start the server:
npm run devServer will run on http://localhost:3000 (or http://0.0.0.0:3000 for network access)
- Navigate to frontend directory:
cd frontend- Install dependencies:
flutter pub get- Update API configuration in
lib/config/api_config.dart:
static const String baseUrl = 'http://YOUR_IP:3000/api';-
Update Supabase configuration in
lib/config/supabase_config.dart -
Run the app:
flutter runhttp://localhost:3000/api
POST /auth/signup- Register new userPOST /auth/login- Login userPOST /auth/google- Google OAuthPOST /auth/logout- Logout userGET /auth/me- Get current userPUT /auth/profile- Update profile
GET /posts/- Get all postsGET /posts/:id- Get post by IDGET /posts/user/:userId- Get user's postsPOST /posts/- Create postPUT /posts/:id- Update postDELETE /posts/:id- Delete postPOST /posts/:id/like- Like postDELETE /posts/:id/like- Unlike post
GET /comments/post/:postId- Get commentsPOST /comments/- Create commentDELETE /comments/:id- Delete comment
POST /follow/:userId- Follow userDELETE /follow/:userId- Unfollow userGET /follow/followers/:userId- Get followersGET /follow/following/:userId- Get followingGET /follow/check/:userId- Check if following
For detailed API documentation, see backend/README.md
- Users - User accounts with profiles
- Posts - User-generated content
- Comments - Post comments
- Follows - User follow relationships
- Likes - Post likes
See backend/prisma/schema.prisma for complete schema.
- Email domain validation (@kiit.ac.in only)
- JWT token authentication
- Rate limiting on all endpoints
- CORS configuration
- Helmet.js security headers
- Input validation with Joi
- PgBouncer connection pooling
- Orphaned record cleanup
- No create post UI (backend ready)
- Comments backend ready, no UI
- Search not implemented
- Edit profile UI missing
- No image upload functionality
- User search functionality
- Image/video upload
- Real-time notifications
- Direct messaging
- Post reporting system
- Email verification
- Password reset
- Hashtags and mentions
- Feed algorithm
We welcome contributions! Please see CONTRIBUTING.md for details on how to contribute to this project.
Built for the KIIT community by developers passionate about social networking.
This project is private and intended for educational purposes.
For issues, questions, or suggestions:
- Create an issue in the repository
- Contact the development team
- Flutter team for the amazing framework
- Supabase for authentication and database services
- Express.js community
- All contributors and testers
Note: This is an active development project. Features and documentation are continuously being updated.
Current Version: 1.0.0
Last Updated: October 4, 2025