An advanced REST API written in Python for a generic social media website
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Mattia Giambirtone 6d0d822083 Typo in example config 2 months ago
endpoints Minor documentation improvements 2 months ago
orm Reformatted with black 2 months ago
responses Added media endpoints, various style modifications and minor fixes, added API.md 2 months ago
templates/email Added support for various types of email verification and email templates 2 months ago
util Reformatted with black 2 months ago
.gitignore Updated .gitignore and removed .idea directory 2 months ago
API.md Minor documentation improvements 2 months ago
LICENSE Initial commit 2 months ago
README.md Minor changes to README 2 months ago
config.py.example Typo in example config 2 months ago
main.py Reformatted with black 2 months ago
piccolo_conf.py.example Initial work on users 2 months ago
requirements.txt Large rework of the application for better documentation support 2 months ago

README.md

PySimpleSocial

An advanced REST API written in Python for a generic social media website.

Note: This is a WIP so far.

Tech Stack

The project is written using FastAPI, piccolo and uvicorn. Other awesome libraries used (only direct dependencies are listed here):

Feature overview

Note: Not all of this is implemented yet

  • Simple authentication system using salted bcrypt hashes for password storage
  • Integrated email system with verification support (optional)
  • Integrated database using PostgreSQL as a backend
  • Simple rate limiting using redis/in-memory storage
  • Support for various kinds of media stored in a CDN, directly inside the database or on a local/remote filesystem
  • Regular social media mechanics: (Un)following users, posting media with captions, stories, etc.
  • User settings (change username, email, bio, password, profile picture, etc.)
  • Simple messaging system using websockets or a polling HTTP API
  • Admin functionality with basic metrics and administration features (flagging/deleting users/posts, handling tickets, etc.)

Note: For security reasons, password and email changes require an email confirmation. Changing the email also forces the user to verify the new address again.

Setup

Move the *.py.example files to their respective *.py files, fill them as necessary, then simply install the dependencies via pip and run main.py

License

This software is licensed under the MIT license. For more information, read the license file