Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dynamic Visibility Status API

Version: 1.0.0
Built With: FastAPI, Pydantic, SQLAlchemy

Post statuses with customizable visibility settings — designed for dynamic interactions and privacy control.


Features

  • Dynamic visibility updates after posting
  • JWT-based Authentication
  • User Registration & Login
  • Contact Management
  • Create, View, Update, and Delete Statuses
  • Track Views per Status
  • Modular structure (routers, schemas, models, crud)
  • Granular Visibility: Public | My Contacts | Limited | My contacts except

Tech Stack

  • FastAPI for high-performance APIs
  • Pydantic for data validation
  • SQLAlchemy for ORM
  • JWT for secure token-based auth

Installation

# Clone the repository
git clone https://github.com/EbenTheGreat/Dynamic-Status-Visibility-API.git
cd Dynamic-Status-Visibility-API

# Create a virtual environment (optional but recommended)
python -m venv venv
source venv/bin/activate      # On Linux/Mac
venv\Scripts\activate         # On Windows

# Install dependencies
pip install -r requirements.txt

# Run the FastAPI development server
uvicorn app.main:app --reload

Create User example

POST /users

{
  "username": "eben",
  "password": "securepass"
}

Auth Example

POST /login

{
  "username": "zoe",
  "password": "zoe123"
}

Create Status

{
  "content": "My new status",
  "visibility": "limited",
  "allowed_user_ids": [2, 3],
  "excluded_user_ids": []
}

Key endpoints

Endpoint Description
POST /users/ Register a new user
POST /login Login and receive JWT token
POST /contacts Add a contact
DELETE /contacts Delete a contact
POST /status Create a status
GET /status/all Get all statuses
GET /status/my/active Get your active statuses
PUT /status/{status_id} Update status visibility
DELETE /status/{status_id} Delete a status
POST /status/{status_id}/views Register a view
GET /status/{status_id}/views Get view count

📜 OpenAPI Documentation

Auto-generated Swagger UI available at:

Author

Tijani Ebenezer (Eben_the_Great)

Built out of a need to innovate the way status and stories are being shared.

🛠️ Roadmap – v2 Goals & Ideas

We’re building towards a more dynamic, user-centric experience in v2. Here's what’s coming:

Feature Description
Filtering & Search Search statuses by date, visibility, or tags
Real-time Updates WebSocket or SSE for live status updates and view tracking
Contact Approval System Mutual contact approval system (like friend requests)
Media Attachments Add images or videos to status posts
Tagging System Use hashtags and @mentions to group or reference other users
GraphQL Support Add support for flexible, client-driven API querying
RBAC / Roles Role-based access control: Admin, Moderator, and User
Notifications Real-time (in-app) or email alerts for views and interactions

Want to Contribute?

I am actively looking for collaborators for v2! Whether you're a backend dev, API nerd, or just interested — contributions are welcome🙌

How to Get Started

# Fork the repo and clone
git checkout -b feature/<your-feature-name>

# Make your changes
git commit -m "Added new feature: X"

# Push and open a PR
git push origin feature/<your-feature-name>

About

This is a FastAPI-based backend system for managing WhatsApp-style statuses with dynamic visibility control.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages