All Projects → LouisYZK → Frodo

LouisYZK / Frodo

Licence: Apache-2.0 license
python/fastapi + golang/gin + Vue + docker 基于异步技术栈的个人博客系统

Programming Languages

python
139335 projects - #7 most used programming language
HTML
75241 projects
go
31211 projects - #10 most used programming language
SCSS
7915 projects
Mako
254 projects
shell
77523 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to Frodo

poem
A full-featured and easy-to-use web framework with the Rust programming language.
Stars: ✭ 1,167 (+777.44%)
Mutual labels:  fastapi
Dynaconf
Configuration Management for Python ⚙
Stars: ✭ 2,082 (+1465.41%)
Mutual labels:  fastapi
FRDP
Boilerplate code for quick docker implementation of REST API with JWT Authentication using FastAPI, PostgreSQL and PgAdmin ⭐
Stars: ✭ 55 (-58.65%)
Mutual labels:  fastapi
starlette-discord
"Login with Discord" support for Starlette and FastAPI
Stars: ✭ 15 (-88.72%)
Mutual labels:  fastapi
Fastapi
FastAPI framework, high performance, easy to learn, fast to code, ready for production
Stars: ✭ 39,588 (+29665.41%)
Mutual labels:  fastapi
30 Days Of Python
Learn Python for the next 30 (or so) Days.
Stars: ✭ 1,748 (+1214.29%)
Mutual labels:  fastapi
fastapi-sqlalchemy-1.4-async
https://rogulski.it/blog/sqlalchemy-14-async-orm-with-fastapi/
Stars: ✭ 17 (-87.22%)
Mutual labels:  fastapi
yappa
Serverless deploy of python web-apps @yandexcloud
Stars: ✭ 57 (-57.14%)
Mutual labels:  fastapi
Awesome Fastapi
A curated list of awesome things related to FastAPI
Stars: ✭ 3,033 (+2180.45%)
Mutual labels:  fastapi
ms-fastapi-template
This project was built as a result of a deepening of the studies discussed on the blog farlley.com with a greater focus on Domain Driven Design (DDD) architecture. In this work you will find a simple template for creating microservices, as well as a use case (which will still be implemented according to the Roadmap found in this same document) a…
Stars: ✭ 31 (-76.69%)
Mutual labels:  fastapi
starlette-graphene3
An ASGI app for using Graphene v3 with Starlette / FastAPI
Stars: ✭ 52 (-60.9%)
Mutual labels:  fastapi
Full Stack Fastapi Postgresql
Full stack, modern web application generator. Using FastAPI, PostgreSQL as database, Docker, automatic HTTPS and more.
Stars: ✭ 7,635 (+5640.6%)
Mutual labels:  fastapi
prometheus-fastapi-instrumentator
Instrument your FastAPI app
Stars: ✭ 511 (+284.21%)
Mutual labels:  fastapi
image-classification-api
Serving model through api. FastApi + PytorchLightning
Stars: ✭ 26 (-80.45%)
Mutual labels:  fastapi
blog-fastapi-vuejs
Simple project that I write using fastapi, motor, and umongo for the backend. VueJS on the frontend
Stars: ✭ 76 (-42.86%)
Mutual labels:  fastapi
hypercorn-fastapi-docker
Docker image with Hypercorn for FastAPI apps in Python 3.7, 3.8, 3.9. Ready for HTTP2 and HTTPS
Stars: ✭ 18 (-86.47%)
Mutual labels:  fastapi
Coronavirus Tracker Api
🦠 A simple and fast (< 200ms) API for tracking the global coronavirus (COVID-19, SARS-CoV-2) outbreak. It's written in python using the 🔥 FastAPI framework. Supports multiple sources!
Stars: ✭ 1,577 (+1085.71%)
Mutual labels:  fastapi
fastapi-admin
A fast admin dashboard based on FastAPI and TortoiseORM with tabler ui, inspired by Django admin
Stars: ✭ 1,765 (+1227.07%)
Mutual labels:  fastapi
fastdash
FastDash = FastAPI + DashBoard.
Stars: ✭ 23 (-82.71%)
Mutual labels:  fastapi
fastapi-debug-toolbar
A debug toolbar for FastAPI.
Stars: ✭ 90 (-32.33%)
Mutual labels:  fastapi

zh-中文

Frodo V2.0

python-version Frodo-v2.0

Frodo is a personal blog using python and golang's asynchronous technique.

Document(only Chinese now and Eng version will be soon)~

Overview

v2.0 add new language golang to rebuild the admin module's api, blog's front end page is still rendered by python.

techniques selection

Frodo's technique selection is as follows:

  • Blog Page Web Framework:python/fastapi
  • Page ORM: sqlalchemy + encode/databases (as FastAPI recommends)
  • Page Templates: Mako/FastAPI-Mako
  • python async web service: asgi/uvicorn
  • Admin Web Framework: golang/gin
  • Addmin ORM: gorm
  • Admin UI: vue-element-admin
  • KV database: redis
  • cached: redis/memcached
  • reverse web proxy: nginx
  • data persistence: mysql
  • database migration: alembic
  • authentication: JWT
  • python type hints: pydantic

features

  • Admin platform supports posts, users and topics Create, Read, Update, Delete (CRUD)
  • Admin posts editor suport preview and markdown
  • Page supports programming lang highlights, Latex Math equations and TOC.
  • Blog has posts global searching
  • Visitors' react and comments based on Github Auth
  • Batch posts in markdown or HEXO exportation
  • Customize your persion partail diplay
  • Activities like twitter
  • Docker deploments

why fastapi?

fastapi is a python web framework gathering features of flask, django. It supports both asynchronous checkpoints and normal blog ways. Using uvicorn to support eventloop make fastapi faster. More excellent feature is the pydantic and data scheme, encouraging to follow the OpenAPI rules, the swagger-docs will be generated automatically.

why golang?

python service use asynchornous asyncio ecosystem. Golang supports asynchronous primitively. goroutine is like python's corouine can be controlled by eventloop. Admin's api is very easy to rebuilt via golang.

Display:

Admin paltform:

Blog Pages:

Activity:

Setup

Docker deployment (Recommends!)

The following are based on docker-compose-1.25.5, MacOS-Majave 15.15 version.

Other verion could be fine as well (not tested!)

Modify the config

python_web/config/config.ini.model and goadmin/config.ini.model,

[global]
debug = True
author = yzk
site_title = Zhikai-Yang Space
host_path = localhost:9080 ## alter this to your web port, like localhost for example

Note: the host_path in config file should be with ip:port

The rest configuration is every service's port, if some port are not accessed, please modify the corresponding config in nginx.conf, docker-compose.yml.

build images

git clone https://github.com/LouisYZK/Frodo
cd Frodo
sh build.sh

There are two web images(python and golang) should be built for a while, if there are some errors about network, you can rebuild it.

Note: Raspberry Pi images' building Raspberry Pi using linux/arm64, related docker-compose configuration are in docker-compose-arm.yml, some images that only can run on x86 should be replaced. Some bugs also fixed in arm64.

Start

docker-compose up ## start the whole servcie

It will start five service in docker-compose in some order:

  • mysql
  • redis
  • python_web
  • golang_web
  • nginx

You can use docker-compose ps to see wether all service are initailizaed correctly, if some service's status are Exited or other errors, please check the start logs and figure out the failure reasons.

Please issue me if the errors are about the program itself!

Usage

If start successfully, you should create an admin user firstly:

docker exec -it $(docker ps | grep frodo/pyweb | awk '{print $1}') python manage.py adduser

confirm the usernam and password according to the hints

then, you can visit <host_ip>:<nginx_server_port>/admin, for example localhost:9080/admin on local PC. Using the accounts you've just created to enter the admin platform.

You can creating some posts for test, and visit localhost:9080 to see its performance.

User's custome partial config is in python_web/config.yaml, modify it and it will work without docker-compose restartinf.

Environment Test

There are some os already testing without errors

  • Ubuntu LTS 16.06 | x86_64
  • MacOS Majave 15 | x86_64
  • Raspberry 4b Debian 10 | arm64/v8 ...
  • Windows ...

Welcom to deploy Frodo on your device!~ And issue me for any problems!~

For developers

The api docs are generated automically in :/docs, it can be tested directly.

I'm sorry that developing documents only in Chinese version currently.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].