- PHP 47.5%
- Vue 32.5%
- TypeScript 16.4%
- Shell 2.3%
- CSS 0.8%
- Other 0.5%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .forgejo/workflows | ||
| app | ||
| bootstrap | ||
| config | ||
| database | ||
| docker | ||
| proxmox | ||
| public | ||
| resources | ||
| routes | ||
| storage | ||
| .dockerignore | ||
| .editorconfig | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| .npmrc | ||
| artisan | ||
| bun.lock | ||
| compose.yml | ||
| composer.json | ||
| composer.lock | ||
| CONTRIBUTING.md | ||
| Dockerfile | ||
| package.json | ||
| phpstan.neon | ||
| pint.json | ||
| postcss.config.ts | ||
| README.md | ||
| rector.php | ||
| tsconfig.app.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| uno.config.ts | ||
| vite.config.ts | ||
Table of contents
Who is this for?
Reminisce is for people who forgets everything you told yourself to remember two seconds ago.
Self-hosting
With Docker
All you need is Docker with Docker Compose.
git clone https://code.vexcited.com/vexcited/reminisce
cd reminisce
cp .env.example .env
Open .env and fill in:
APP_URL: the public URL of your instance, for examplehttps://reminisce.example.com.OAUTH_*: at least one login provider, see Login providers.
Then start it.
docker compose up -d
Reminisce is now running on port 8000. You can change the port with PORT=3000 in .env.
Put it behind the reverse proxy of your choice (Caddy, Nginx, Traefik...) to serve it over HTTPS on your domain.
Realtime collaboration runs in a second reverb container, reached through the same port on /app, so make sure your reverse proxy lets websockets through (Caddy and Traefik do it on their own, Nginx needs the Upgrade and Connection headers).
The first boot generates the app key, creates the SQLite database and runs the migrations.
Everything is stored in the reminisce Docker volume, so back it up.
The container reports its health through the /up route, you can also point your uptime monitor to it.
To update, pull the latest version and rebuild, migrations run automatically every time the container starts.
git pull
docker compose up -d --build
On Proxmox
Reminisce comes with a script based on the Proxmox VE Community Scripts. It creates an Alpine LXC container and installs Reminisce natively inside it.
In the shell of your Proxmox node, run:
bash -c "$(curl -fsSL https://code.vexcited.com/vexcited/reminisce/raw/branch/main/proxmox/ct/reminisce.sh)"
Once it's done, open the console of the container and edit the configuration.
nano /opt/reminisce/.env
Fill in APP_URL and at least one login provider, see Login providers.
The configuration is cached for performance, so apply your changes with:
php /opt/reminisce/artisan optimize
Reminisce is now reachable on port 80 of the container.
Realtime collaboration runs as the reminisce-reverb service, Nginx forwards the websockets on /app to it.
To update, run update in the console of the container.
It pulls the latest version, rebuilds it and runs the migrations.
Login providers
Reminisce has no passwords: users log in with any OAuth2 or OpenID Connect provider (Pocket ID, Authentik, Keycloak, GitHub, GitLab...). You can add as many providers as you want.
List them in OAUTH_PROVIDERS, separated by commas, then configure each one with its key in uppercase.
OAUTH_PROVIDERS=pocketid,github
OAUTH_POCKETID_NAME="Pocket ID"
OAUTH_POCKETID_CLIENT_ID=...
OAUTH_POCKETID_CLIENT_SECRET=...
OAUTH_POCKETID_AUTHORIZE_URL=https://id.example.com/authorize
OAUTH_POCKETID_TOKEN_URL=https://id.example.com/api/oidc/token
OAUTH_POCKETID_USERINFO_URL=https://id.example.com/api/oidc/userinfo
OAUTH_POCKETID_PKCE=true
OAUTH_GITHUB_NAME=GitHub
OAUTH_GITHUB_CLIENT_ID=...
OAUTH_GITHUB_CLIENT_SECRET=...
OAUTH_GITHUB_AUTHORIZE_URL=https://github.com/login/oauth/authorize
OAUTH_GITHUB_TOKEN_URL=https://github.com/login/oauth/access_token
OAUTH_GITHUB_USERINFO_URL=https://api.github.com/user
OAUTH_GITHUB_SCOPES="read:user user:email"
| Variable | Required | Default |
|---|---|---|
OAUTH_{KEY}_NAME |
no | the key |
OAUTH_{KEY}_CLIENT_ID |
yes | |
OAUTH_{KEY}_CLIENT_SECRET |
yes | |
OAUTH_{KEY}_AUTHORIZE_URL |
yes | |
OAUTH_{KEY}_TOKEN_URL |
yes | |
OAUTH_{KEY}_USERINFO_URL |
yes | |
OAUTH_{KEY}_SCOPES |
no | openid profile email |
OAUTH_{KEY}_PKCE |
no | false |
When creating the OAuth application on the provider side, use {APP_URL}/user/login/{key}/callback as the callback URL, for example https://reminisce.example.com/user/login/github/callback.
After changing .env, apply it with docker compose up -d on Docker, or php /opt/reminisce/artisan optimize on Proxmox.
Roadmap
- Scaffold Laravel with Vue through Inertia
- Projects, notes and reminders with public or private visibility
- Graph
This section should be entirely replaced by Reminisce, once good enough!
Vocabulary
User
Your instance have users, they should be authenticated. The platform is not gated by authentication though, people can make public projects, notes or even reminders!
Project
Groups stuff in a single place. In a project, you can have notes, reminders, users and even more projects!
Note
A markdown reader (and editor when going into this mode). It should be able to be private (default value) or public.
Reminder
Something you can create inside a note, a project or even globally! It can also be private (default value) or public.
A reminder has a deadline, a title and an optional markdown content or even attachments if needs more explanation.
Graph
A graph of all the notes/reminders linked together with also the ones from external users, if they did linked yours.