POC: Personal projects and tasks for one person, packaged in a single container.
62
Personal projects and tasks for one person, in a single container.
This project is a proof of concept, built with the help of artificial intelligence to test some technologies and libraries. It is not a finished product: it has not been audited, it may contain bugs, and no warranty is offered. Do not use it with critical data or in production without reviewing it yourself.
Each registered user owns projects, and each project owns tasks. Tasks have list, kanban, and Gantt views, both inside one project and across every project from the sidebar. Files can be attached while editing a project or a task. Due reminders go out by email and through Laravel Reverb. Each user can download and restore their own backup. Sign-in can use a password, two-factor authentication, and passkeys. The interface is English by default and Spanish, with light, dark, and system themes.
A task moves through six statuses: Planned, To do, Doing, Done, Accepted, and Rejected. The kanban shows To do, Doing, and Done, with Rejected inside the Done column; dropping a Done card on the accept zone marks it Accepted and takes it off the board. Allowed moves are Planned to To do; To do to Planned or Doing; Doing to To do or Done; Done to Doing, Accepted, or Rejected; and Rejected back to To do or Doing. Every status change is recorded in a Change Log that can be read per task, per project, or across all tasks. Each task also has comments written in Markdown, with a preview before saving; images are not rendered and external links open in a new tab.
docker run -d --name waypoint -p 8080:80 -v waypoint-data:/data \
-e APP_URL=http://localhost:8080 \
-e MAIL_MAILER=smtp -e MAIL_HOST=smtp.example.com -e MAIL_PORT=587 \
-e MAIL_USERNAME=user -e MAIL_PASSWORD=secret \
-e [email protected] \
seadragoncl/waypoint
Passkeys and secure cookies need HTTPS, or plain HTTP on localhost. Put a TLS proxy in front of the container and set APP_URL to that public https:// origin. The app trusts X-Forwarded-Proto. Changing the domain later invalidates passkeys that were already registered.
| Variable | Required | Purpose |
|---|---|---|
APP_URL | yes | Public origin used for links, cookies, Reverb, and passkeys |
MAIL_MAILER | no | smtp or mailgun |
MAIL_FROM_ADDRESS | no | From address |
MAIL_FROM_NAME | no | From name; defaults to Sea Dragon WayPoint |
MAIL_HOST | for SMTP | SMTP host |
MAIL_PORT | for SMTP | SMTP port |
MAIL_USERNAME | for SMTP | SMTP user |
MAIL_PASSWORD | for SMTP | SMTP password |
MAIL_SCHEME | no | smtp or smtps |
MAILGUN_DOMAIN | for Mailgun | Mailgun domain |
MAILGUN_SECRET | for Mailgun | Mailgun secret |
MAILGUN_ENDPOINT | no | Defaults to api.mailgun.net |
If mail is missing or invalid, the app still starts and skips the mail channel.
/data holds postgres/ (the database), storage/ (uploads, sessions, and backup temporaries), and secrets/ (APP_KEY and the Reverb keys). Back up the whole volume. APP_KEY encrypts two-factor secrets; without secrets/ those secrets cannot be read.
Inside the app, each user can download a zip named waypoint-backup-YYYYmmdd-HHMMSS.zip. The format id is waypoint-backup, version 2, which adds the comments and the status change log of each task. Version 1 files and older files with format proyectos-backup can still be restored, with both lists empty. The zip does not include the password, name, email, two-factor authentication, or passkeys. Restoring adds copies of projects and does not change two-factor authentication or passkeys.
This is a proof of concept. Registration is open: anyone who can reach the site can create an account. It is a single instance, with no high availability. Restoring a backup twice duplicates projects. Accepted is a final status; a Rejected task can be picked up again.
Content type
Image
Digest
sha256:78847d39a…
Size
136.9 MB
Last updated
about 1 month ago
docker pull seadragoncl/waypoint