A full‑stack Social Network built with Vue.js for the frontend and Go (Golang) for the backend. The project implements core social networking features such as authentication, profiles, followers, posts, groups, real‑time chat, and notifications, all containerized using Docker.
- User registration and login
- Session‑based authentication using cookies
- Secure password hashing with bcrypt
- Persistent login until explicit logout
- Public and private profiles
- Profile information:
- First name & last name
- Date of birth
- Avatar (optional)
- Nickname (optional)
- About me (optional)
- Toggle profile visibility (public/private)
- View user activity and posts
- Followers & following lists
- Send follow requests
- Accept or decline follow requests
- Auto‑follow for public profiles
- Unfollow users
- Create posts and comments
- Attach images (JPEG, PNG, GIF)
- Post privacy levels:
- Public – visible to all users
- Followers – visible only to followers
- Custom private – visible only to selected followers
- Create groups with title & description
- Invite users to groups
- Accept or reject group invitations
- Request to join groups
- Group browsing
- Group‑only posts and comments
- Create group events
- Event details:
- Title
- Description
- Date & time
- RSVP options:
- Going
- Not going
- Private messaging using WebSockets
- Messaging allowed if:
- One user follows the other, or
- Recipient has a public profile
- Group chat rooms
- Emoji support
- Real‑time notifications available on all pages
- Notifications for:
- Follow requests (private profiles)
- Group invitations
- Group join requests (for group creators)
- Group events creation
- Notifications clearly separated from private messages
- Vue.js (JavaScript framework)
- HTML5, CSS3, JavaScript
- Responsive UI
- REST API communication with backend
- WebSocket client for real‑time chat & notifications
- Go (Golang)
- Standard Go packages
- Gorilla WebSocket
- Session & cookie‑based authentication
- RESTful API
- SQLite
- Entity‑Relationship based schema
- SQL migrations using golang‑migrate
- Docker (separate containers for frontend & backend)
- SQLite is used for data persistence
- Database tables are created using migrations
- Migrations are automatically applied on backend startup
- Runs the Go server
- Exposes API & WebSocket ports
- Handles database & migrations
- Serves Vue.js application
- Communicates with backend via HTTP & WebSockets
docker-compose up --build- Passwords hashed using bcrypt
- Session‑based authentication
- Secure cookie handling
- Input validation on backend
- Go standard library
- Gorilla WebSocket
- golang‑migrate
- sqlite3
- bcrypt
- UUID
This project helped reinforce knowledge in:
- Full‑stack web development
- Authentication with sessions & cookies
- SQL & database design
- Database migrations
- Real‑time communication with WebSockets
- Docker & containerization
- Vue.js application architecture
✔ Project completed and fully functional
Developed as part of a full‑stack learning project using Vue.js and Go.