Skip to content

IsmailICHI/social-network

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Social Network

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.


🚀 Features

👤 User Accounts & Profiles

  • 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

➕ Posts & Interactions

  • 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.

🤝 Followers System

  • Follow/unfollow users.
  • Follow requests for private profiles.
  • Auto-follow for public profiles.
  • Accept/decline follow requests.

👥 Groups

  • 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

💬 Real-Time Chat

  • 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.

🔔 Notifications

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.


🏗️ Technical Architecture

Backend

  • 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.

Frontend

  • 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

Docker Setup

Two fully isolated containers:

  • Backend container: Go server + WebSocket + migrations.
  • Frontend container: Serves the client-side application.
  • Containers communicate internally through exposed ports.

Database Structure

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.


🧪 What This Project Demonstrates

  • 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

📜 License

This project is for educational and practical full-stack development purposes.


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5