A full-stack social network application inspired by modern platforms like Facebook. This project delivers real-time interaction, privacy-controlled content sharing, and seamless communication — all built with a Dockerized architecture and powered by Go, SQLite, and a modern JavaScript frontend framework.
- Secure registration and login system with sessions and cookies.
- Optional profile fields: avatar, nickname, and bio.
- Public and private profile modes.
- Profile dashboard displaying:
- User information
- Activity overview
- Followers & following lists
- User posts
- Create posts with text or images (JPEG, PNG, GIF).
- Comment on posts.
- Post privacy levels:
- Public
- Followers-only
- Custom-selected followers
- Display feed based on visibility rules.
- Follow/unfollow users.
- Follow requests for private profiles.
- Auto-follow for public profiles.
- Accept/decline follow requests.
- Create and manage groups with title & description.
- Invite members / accept join requests.
- Group-only posts and comments.
- Group event system:
- Title, description, date/time
- RSVP options: Going / Not Going
- Private messaging via WebSockets.
- Messages allowed only between users who follow or are followed.
- Emoji support.
- Group chat available for group members.
- Instant message delivery for public profiles or mutual following.
Users receive dynamic notifications for:
- Follow requests
- Group invitations
- Group join requests
- New group events
- Additional custom notifications implemented in the system
Notifications are delivered separately from private messages.
- Built with Go (Golang).
- Uses SQLite as the database engine.
- Fully containerized using Docker.
- Migrations handled using:
golang-migrate- Organized folder structure with SQL up/down migrations.
- WebSockets for real-time chat.
- Image handling for uploads.
- Secure password hashing using bcrypt.
- UUIDs for unique identifiers.
- Built using a modern JavaScript Framework (Next.js / Vue / Svelte / Mithril — depending on implementation).
- Responsive UI design.
- Uses the backend API for:
- Authentication
- Posts
- Chats
- Notifications
- Groups
Two fully isolated containers:
- Backend container: Go server + WebSocket + migrations.
- Frontend container: Serves the client-side application.
- Containers communicate internally through exposed ports.
Designed using an Entity Relationship Diagram (ERD), with clean relationships between:
- Users
- Followers
- Posts
- Comments
- Groups
- Group Members
- Group Events
- Chat Messages
- Notifications
Each run of the backend applies migrations automatically to ensure the database is ready.
- Authentication system using sessions & cookies
- Database migrations and schema evolution
- WebSockets for real-time communication
- Containerization with Docker (frontend & backend)
- Secure image upload and storage
- SQL relations and efficient querying
- Clean separation of concerns (frontend vs backend)
- Building a complete modern social platform
This project is for educational and practical full-stack development purposes.