Skip to content

Commit

Permalink
From refs/heads/main e95ee35
Browse files Browse the repository at this point in the history
  • Loading branch information
ramsy0dev committed Dec 8, 2024
0 parents commit aac29a9
Show file tree
Hide file tree
Showing 150 changed files with 8,499 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .buildinfo
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Sphinx build info version 1
# This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 62040a5f15cc6e23123b749ada949a8e
tags: 645f666f9bcd5a90fca523b33c5a78b7
Empty file added .nojekyll
Empty file.
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#GitHub Pages

Last update of sphinx html documentation from [e95ee35](https://github.com/PufferBlow/pufferblow/tree/e95ee3581f55259f6e48ec4140b36fb9aab36964)
Binary file added _images/supabase-new-project.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added _images/supabase-pricing.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
44 changes: 44 additions & 0 deletions _sources/get_started.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@

===============
Get started
===============

To get started on hosting your own `pufferblow <https://github.com/PufferBlow/pufferblow>`__ server, you will need to first setup a VPS (or you can try and host it on your local network using a spare laptop or even on your current machine), than you will need to setup `supabase <https://supabase.com>`__.

Setup a Linux VPS
=================

Numerous affordable VPS services are available, offering reliable Linux VPS solutions. Among the options that we recommend are:

* `Oracle's Free tier <https://www.oracle.com/cloud/free>`_
* `Contabo <https://contabo.com/en/>`_

Setup supabase
==============

Supabase is a Firebase alternative that is open-source, which is why we are using.
To set it up, you can use the **free plan** available at `supabase.com <https://supabase.com>`__, or you can choose a **paid plan** option.
We are going to be using the **free plan** so just head over to `supabase.com/pricing <https://supabase.com/pricing>`__ and choose a plan and create an account:

.. image:: ./_static/images/supabase-pricing.png
:class: image-style
:alt: Supabase pricing plans


after that, you can then create a **new project**, give it a **name** and a **super strong database password**, select a **region**:

.. image:: ./_static/images/supabase-new-project.png
:class: image-style
:alt: Supabase create a new project

.. warning::

Make sure to save your **super strong database password** safe because you are going to need it in order to connect to the database.

After creating the project, it may take up to 5min in order to setup everything, but after the setup process, head over to **the project settings** page then select **Database**, and you will see your **database's connection info**:

.. image:: ./_static/images/supabase-project-database-connection-info.png
:class: image-style
:alt: Supabase project's database connection info

make sure to save them in a text file because we're going to need them when setting up `pufferblow <https://github.com/PufferBlow/pufferblow>`__
10 changes: 10 additions & 0 deletions _sources/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

Welcome to pufferblow-api docs's documentation!
===============================================

.. toctree::
:maxdepth: 2
:caption: Contents:

introduction
get_started
84 changes: 84 additions & 0 deletions _sources/introduction.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
==============================
Introduction to pufferblow
==============================

Introduction
============

The `pufferblow <https://github.com/PufferBlow/pufferblow>`__ is the official open-source server for `PufferBlow <https://github.com/PufferBlow>`__. Using it you can host your own server and create a community for you, your friends, and potentially others to join and spend wonderful times together. One of the key strengths of the `pufferblow <https://github.com/PufferBlow/pufferblow>`__ is its robust security measures. Being open-source and free to use, it ensures your privacy as it implements advanced encryption algorithms such as Blowfish and bcrypt for data hashing and encryption, making the `pufferblow <https://github.com/PufferBlow/pufferblow>`__ a secure choice for hosting your own server.
Unlike many other chat services that offer little control to the server owner, such as Discord and Guilded, `PufferBlow <https://github.com/PufferBlow/pufferblow>`__ stands apart. With `PufferBlow <https://github.com/PufferBlow/pufferblow>`__, you have the ability to host your own server using `pufferblow <https://github.com/PufferBlow/pufferblow>`__ and customize it according to your preferences.

The ideology of pufferblow
==============================

This service enables users to host their own servers or instances while maintaining a consistent user experience across all these servers. Furthermore, users only need to create a single account on one server, which will be synchronized across all instances (aka fediverse network).

.. note::

As of version **v0.0.1-beta**, the `pufferblow <https://github.com/PufferBlow/pufferblow>`__ does not yet support the Fediverse. However, this feature is planned for future releases. The primary reason for creating PufferBlow was to develop a Fediverse-compatible Discord-like chat service, which aligns with the ethos of the Fediverse itself.

Prerequisites
=============

To start hosting your server, you will first need a couple things:

* A **Linux VPS**, it can be any Linux distro that you want as long as it meets the following requirements:

* At least 2 CPU cores.

* 1 to 2 GB of RAM.

* High network bandwidth.

.. note::

you won't need a lot of storage to host `pufferblow <https://github.com/PufferBlow/pufferblow>`__, but if you are going to also host your own instance of `supabase <https://supabase.com/>`__ than it is recommended to have at least **50GB of storage or higher**.

* `supabase <https://supabase.com/>`__ is an open-source alternative to Firebase. You have the option to either self-host it or use their free plan available at https://supabase.com. However, it's recommended not to self-host unless your server has a large number of members. If your server is expected to grow significantly, then self-hosting becomes the optimal solution. In such cases, you may also need to consider upgrading your VPS hardware to accommodate the increased load.

Dependencies
============

These are mostly python libs and dependencies that are used by pufferblow:

.. _FastAPI: https://fastapi.tiangolo.com/
.. _Typer: https://typer.tiangolo.com/
.. _Rich: https://rich.readthedocs.io/en/latest/
.. _Uvicorn: https://www.uvicorn.org/
.. _PyYAML: https://pyyaml.org/wiki/PyYAMLDocumentation
.. _PyCryptodome: https://www.pycryptodome.org/en/latest/
.. _bcrypt: https://pypi.org/project/bcrypt/
.. _Loguru: https://loguru.readthedocs.io/en/stable/
.. _pytz: http://pythonhosted.org/pytz/
.. _psycopg2-binary: https://www.psycopg.org/docs/
.. _pytest: https://docs.pytest.org/en/latest/
.. _SQLAlchemy: https://www.sqlalchemy.org/
.. _Websockets: https://websockets.readthedocs.io/en/stable/
.. _HTTPX: https://www.python-httpx.org/

* `FastAPI <FastAPI_>`_: FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints.
* `Typer <Typer_>`_: Typer is a library for building command line interface (CLI) applications, with support for argument parsing, validation, help messages, and more.
* `Rich <Rich_>`_: Rich is a Python library for rendering rich text and beautiful formatting to the terminal.
* `Uvicorn <Uvicorn_>`_: Uvicorn is a lightning-fast ASGI server implementation, using uvloop and httptools.
* `PyYAML <PyYAML_>`_: PyYAML is a YAML parser and emitter for Python.
* `PyCryptodome <PyCryptodome_>`_: PyCryptodome is a self-contained Python package of low-level cryptographic primitives.
* `bcrypt <bcrypt_>`_: bcrypt is a password hashing function designed by Niels Provos and David Mazières.
* `Loguru <Loguru_>`_: Loguru is a library which aims to bring enjoyable logging in Python.
* `pytz <pytz_>`_: pytz brings the Olson tz database into Python.
* `psycopg2-binary <psycopg2-binary_>`_: psycopg2-binary is a stand-alone package that includes the PostgreSQL binary libraries.
* `pytest <pytest_>`_: pytest is a mature full-featured Python testing tool that helps you write better programs.
* `SQLAlchemy <SQLAlchemy_>`_: SQLAlchemy is the Python SQL toolkit and Object-Relational Mapping (ORM) system.
* `Websockets <Websockets_>`_: Websockets is a library for building WebSocket servers and clients in Python.
* `HTTPX <HTTPX_>`_: HTTPX is a fully featured HTTP client for Python 3, which provides sync and async APIs, and support for both HTTP/1.1 and HTTP/2.

for the documentation, we used the `sphinx <https://www.sphinx-doc.org/en/master/>`__ document generator:

.. _Sphinx: https://www.sphinx-doc.org/en/master/
.. _SphinxBookTheme: https://github.com/executablebooks/sphinx-book-theme
.. _SphinxAutobuild: https://pypi.org/project/sphinx-autobuild/
.. _SphinxFavicon: https://pypi.org/project/sphinx-favicon/

* `Sphinx <Sphinx_>`_: Sphinx is a tool that makes it easy to create intelligent and beautiful documentation.
* `Sphinx Book Theme <SphinxBookTheme_>`_: The Sphinx Book Theme is a theme for Sphinx that is designed to look good for books and documentation.
* `Sphinx Autobuild <SphinxAutobuild_>`_: Sphinx Autobuild is a tool that automatically rebuilds your Sphinx documentation whenever changes are detected.
* `Sphinx Favicon <SphinxFavicon_>`_: Sphinx Favicon is an extension for Sphinx that adds support for favicons in your documentation.
6 changes: 6 additions & 0 deletions _sources/modules.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
pufferblow
==========

.. toctree::
:maxdepth: 4

Loading

0 comments on commit aac29a9

Please sign in to comment.