~sirn/fanboi2

ref: 511ea397b10507eadb4f9e4b8180984ad7d269ae fanboi2/fanboi2/cmd d---------
chore: update deps to latest version
[cmd/deploy] switch fbdeploy to use python -m venv
[cmd/deploy] ensure permission and cleanup connection after upload
[cmd/deploy] support --port
[cmd/deploy] update deploy to use npm/poetry during build
Cleanup Docker and docker-compose.
Switch to Gunicorn.
Add fbdeploy command using Fabric (#54)

For CI/CD use.
Simplify deployments (#51)

* Drop Pipenv in favor for a simpler Virtualenv+Makefile based workflow.
* Move assets back to root directory.
* Cleanup Dockerfile and use S6 to supervise/reap process.
* Update TypeScript assets to work under newer TypeScript version.
Coding style cleanups and setup pre-commit hooks (#42)

Massive cleanup in preparation for 0.30 (#25)

* Only use environment variable to configure the application.

  Closes #17

  In order to simplify deployment on containerized or 12-factor centric
  environment (such as Docker or Heroku) where writing configuration
  file is not preferrable.

  We also prefer to have only a single way to configure application,
  which means Pyramid-style ini configurations are now dropped in favor
  for environment variable.

* Refactor post utils into post filters

  Closes #23

  Akismet, DNSBL and proxy checking are now refactored into a 'filter'
  which can be easily extended.

* Replaced Beaker with PyNaCl-based session storage.

  This change switched session storage from Memcached-based session
  storage to a cookie-based session storage with strong encryption
  using PyNaCl.

* Replaced app-specific settings with setting model.

  Application specific settings are now stored in the database instead
  of configuration file as these configurations are not required
  for running the app and may require a bit more complicate data
  structure.

* Add services layer

  Closes #18

  We've added services layer and successfully migrated the application
  to use services rather than calling components directly. This change
  will make it easier to extend as well as optimizing the application
  in the future.

  This change also allowed us to remove complexity from model, such as
  that post-commit hooks are now done within the services layer.
  Caching is also implemented in some services, such as settings.

* Explicitly setting up routes.

  We will add authentication and authorization, which requires
  flexibility on the routing configuration, which means the helper in
  its current form is no longer preferrable.

* Use Pyramid native CSRF implementation.

  We have now switched to Pyramid's native CSRF implementation instead
  of using home-grown SecureForm. This change resulted in a simplified
  form handling throughout the application.

* Replaced fb2 maintenance scripts.

  As we will have a proper admin interface, these scripts are no
  longer necessary and its usage are discouraged. Due to this, we are
  dropping all the maintenance scripts in favor for a more specific
  fbctl.

* Remove PyCharm-style type annotations.

  To be replaced with Python 3.5-style type annotations in order to
  incorporate type checking with MyPy.

* Consolidate assets directory for concerns separation.

  Move all assets-related files into assets/ so it's clear that which
  files are responsible for compiling assets (and thus purgable after
  assets are compiled when building images).

* Convert JsonType field to native JSON field.

  SQLALchemy has since supported the native JSON field in PostgreSQL
  and it is no longer necessary to use our own implementation of JSON
  field that was a wrapper over Text.

* Cleanup migration files

  Styling fixes per Flake8.

* Update dependencies.

  Make sure dependencies are up-to-date.
Next