![Forget](assets/promo.gif) ![Maintenance status](https://img.shields.io/maintenance/no/2022.svg) [![Build status](https://img.shields.io/travis/codl/forget.svg)](https://travis-ci.org/codl/forget/) [![Test coverage](https://img.shields.io/codecov/c/github/codl/forget.svg)](https://codecov.io/gh/codl/forget) Forget is a post deleting service for Twitter, Mastodon, and Misskey. ## Features * Delete your posts when they cross an age threshold. * Or keep your post count in check, deleting old posts when you go over. * Preserve old posts that matter by giving them a favourite or a reaction. * Set it and forget it. Forget works continuously in the background. ## Non-features Forget is not a one-time purging tool. It is designed to prune your account continuously, not quickly. If you need a lot of posts gone fast, you may want to look for another more-suited tool. ## Running your own ### Requirements * Postgresql * Redis * Python 3.6+ * Node.js 10+ ### Set up venv Setting up a venv will isolate Forget from your system's libraries and allow you to install dependencies locally as a normal user. It's not necessary but it is recommended! ``` $ python -m venv venv $ source venv/bin/activate ``` If you're using `zsh` or `fish` as a shell, substitute `venv/bin/activate` with `venv/bin/activate.zsh` or `venv/bin/activate.fish`, respectively. You will need to "activate" the venv in every new terminal before you can use pip or any python tools included in dependencies (honcho, flask...) ### Download and install dependencies ``` $ pip install -r requirements.txt $ npm install ``` Wow!! Exciting ### Create and complete config file Gotta set up those, paths, and stuff. ``` $ cp config.example.py config.py $ $EDITOR config.py ``` ### Set up database schema If you haven't started postgresql yet now would be a great time to do that. ``` $ createdb forget # if you havent created the DB yet $ env FLASK_APP=forget.py flask db upgrade ``` ### Build static assets Gonna do it...! ``` $ doit ``` Done did it. ### Running The included `Procfile` will run the app server and the background worker. `honcho`, a `Procfile` runner, is included as a dependency: ``` $ honcho start ``` The application server will listen on `http://127.0.0.1:42157`. You'll want to use your favourite web server to proxy traffic to it. ### Development For development, you may want to use `Procfile.dev`, which starts flask in debug mode and rebuilds the static assets automatically when they change ``` $ honcho -f Procfile.dev start ``` Or you could just look at `Procfile.dev` and run those things manually. It's up to you. You can run the (currently very incomplete) test suite by running `pytest`. You'll need redis installed on your development machine, a temporary redis server will be started and shut down automatically by the test suite. ## Docker This project is also able to be deployed through Docker. 1. Copy `config.docker.py` to `config.py` and add additional configurations to your liking. 1. By default, the webapp container will be listening on `127.0.0.1:42157`, which you can point a reverse proxy at. * If your reverse proxy is in another docker network then you'll need a `docker-compose.override.yml` file to attach the `www` service to the right network and not publish any ports. An example override file is provided. The web app will be listening on `http://forget-www-1:42157`. 1. By default, the `docker-compose.yml` creates relative mounts `./redis`, `./postgres`, and `./celery` relative to the `docker-compose.yml` location. An example `docker-compose.override.yml` file is provided that shows how to change this. 1. Run `docker-compose build` to build the image. 1. Run `docker-compose up` to start or `docker-compose up -d` to start in the background, and use `docker-compose down` to stop. ## Contact If you're having trouble with Forget, or if you're not having trouble but you just want to tell me you like it, you can drop me a note at [@codl@chitter.xyz](https://chitter.xyz/@codl) or [codl@codl.fr](mailto:codl@codl.fr). ## Greetz Thank you bea, for making ephemeral, inspiring me to make [limiter][], then this, in an attempt to bring ephemeral with me everywhere. ☕ [limiter]: https://github.com/codl/limiter Thank you to the kind folks who have emailed me to tell me Forget has made their time on social media less stressful. 🌻