Skip to content

Fastapi for the backend, npm based front end, runs in docker and can be fired up immediately in Render.com or DigitalOcean

License

Notifications You must be signed in to change notification settings

FDA-1/template-docker-fastapi-site

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

template-docker-fastapi-site

image

Design

This is to be a fastapi app. Use this template: https://github.com/zackees/template-docker-fastapi-site

The app will have the following endpoints:

  • POST /api/youtube/channel
    • Header: Auth token (just make up a sufficiently large random token)
    • body: the channel id
    • returns: a json response
      • ok: { ok: True, rank: float, err: None }
      • not found: { ok: Fale, rank: None, err: "Not Found" }
  • POST /api/youtube/video
    • Header: Autho token
    • body: the video id (for example ?watch=XXXX where XXXX is the video id)
    • returns: a json response
      • ok: { ok: True, rank: float, channel_id: str, err: None }
      • not found: { ok: False, rank: None, channel_id: None, err: "Not Found" }

Endpoint management:

  • All endpoints will input pydantic objects, and return pydantic objects.
    • Pydantic models convert to json for input and outputs, and are type checked
    • They will also become part of the openapi that's automatically generated for the fastapi site

Database

  • Use the postgres database in render.com

  • Use the sqlaclchemy ORM to model and access the postgres

  • Models.py will model the postgres database

  • db.py will use models.py to query, and return data as a pydantic object that will be returned

  • It's important to note that the api endpoints should be as simple as possible, with db.py doing most of the work.

Background worker

  • A background worker will periodically scrape youtube and collect data on all videos to target channels. We will use yt-dlp for this task.
  • But don't worry too much about how this is scheduled.

First deliverables

  • Generate all the boilerplate listed in this document and then contact me for next steps.

About

Fastapi for the backend, npm based front end, runs in docker and can be fired up immediately in Render.com or DigitalOcean

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 48.6%
  • JavaScript 18.8%
  • HTML 15.9%
  • Shell 9.3%
  • CSS 5.6%
  • Dockerfile 1.1%
  • TypeScript 0.7%