Deployed on your own infrastructure

Devotion: your team’s workspace,
on your own servers.

Devotion (devotionapp) brings together personal or shared spaces, and inside them projects with their documentation, tasks, meetings and credentials, all synced in real time. Devotion is not a SaaS: it is installed on your company's infrastructure and your data never leaves it.

Docker Compose On-premise GitHub OAuth AES-256-GCM Real time

Interactive demo

This is what working in Devotion looks like.

A guided tour of the main features, inside the real interface: a shared space, the Atlas project inside it and its sections. Take the controls whenever you want: click any section, drag a card, open the palette.

Producto/Overview

The product team: Atlas, Orion and the client portal. Shared with 3 people.

3Active projects
27Open tasks
4Overdue
41Done
ProjectsView all →
O OrionReporting and analytics Planned 8 P Client portalPublic web and mobile app On hold 6
Load per project
Atlas13
Orion8
Portal6
Members
JGANMR Jorge, Ana and Marta · by invitation
A

Atlas

Booking platform for the sales team.

In progress acme/atlas Created 12 Mar 2026 TypeScript Fastify PostgreSQL
13Open tasks
2Overdue
4Done
24%Progress
Tasks by status
Backlog2
To do3
In progress2
Done4
Upcoming meetings
9Retrospective · AtlasTomorrow · 17:30 – 18:30
17Deployment follow-up09:00 – 09:30
1Demo with the client12:00 – 13:30
All 16Open 13Mine 9 Filter Manage statuses New task
Search notes… New note Loose ideasedited 1 Sept Call with the clientedited 27 Aug Things to checkedited yesterday Questions for Thursdayedited 28 Aug
JGJorge · edited 1 Sept

Loose ideas

  • Send the revised budget
  • Close the search bug
  • Prepare the demo with real data

We agreed to talk again on Thursday; if there is no answer, we go with option B.

const reserva = await api.post("/api/reservas", { salaId, inicio, fin });
Search the documentation Code2 Stack1

Documentation

Atlas

Booking platform for the sales team.

Code2 documents

The repository's structure: what lives in each folder.

Stack1 document

Technologies, versions and the role of each one.

Endpoints

Create a booking

POST/api/reservas

Creates a booking for a room in the given time slot. Fails with 409 if the slot is taken.

ParameterTypeDescription
salaIduuidRoom to book
iniciodatetimeStart of the slot (ISO 8601)
findatetimeEnd of the slot

Response · 201

{
  "id": "c1f2…",
  "salaId": "7ab0…",
  "estado": "confirmada"
}

Data model

Bookings

A user books a room for a time slot. Bookings cannot overlap in the same room; the state moves from pending to confirmed or cancelled.

usuario iduuid nombretext emailtext rolenum reserva iduuid sala_iduuid usuario_iduuid iniciotimestamptz fintimestamptz estadoenum sala iduuid nombretext capacidadint plantaint

Primary keyForeign keyOneMany

EntityFieldsDescription
reserva6A slot booked by a user in a room
sala4Bookable room with capacity and floor
usuario4Person who books; the role limits what they can do

Architecture

System components

A single-page app talks to the API over the same origin. The API owns every write; reads are synced in real time through Electric from PostgreSQL.

WebReact · Vite APIFastify · Node 22 GitHub OAuthidentidad Electricsincronización PostgreSQL 17base de datos Redissesiones MinIOadjuntos · S3
  • Everything runs in Docker Compose on the client's servers, behind TLS on their domain.
  • GitHub OAuth is the only way in; an allowlist decides who.

Guides

Deployment guide

Atlas runs on Docker Compose. The API applies migrations on start-up, so a deployment is a pull and a restart.

# En el servidor de pre
git pull origin main
docker compose -f docker-compose.prod.yml up -d --build
docker compose logs -f api
  • Check the health endpoint: /api/health must answer 200.
  • The backup runs at 03:00 to the shared MinIO.
DayWeekMonth Today

Project accesses (dashboards, servers, test accounts…), visible to the members of the space.

New login
Project mail account
Linkmail.atlas.example ↗
Userinfo@atlas.example
Password••••••••••

Two-factor on the office phone.

Grafana · pre
Linkgrafana.pre.atlas.example ↗
Useradmin
Password••••••••
Client admin panel
Linkadmin.atlas.example ↗
Userdemo-comercial
Password••••••••••

Test account: the data resets every night.

Project snippets organised by group, ready to copy.

New group… Create group
Deployment2
Deploy to prebash
git pull origin main
docker compose -f docker-compose.prod.yml up -d --build
docker compose logs -f api
Deployment variablesdotenv
DATABASE_URL=postgresql://user:pass@db:5432/atlas
REDIS_URL=redis://redis:6379
SESSION_SECRET=cámbiame
Database2
Purge the home cachejavascript
await fetch("/api/cache/home", { method: "DELETE" });
Nightly backupbash
pg_dump -Fc atlas | mc pipe minio/backups/atlas-$(date +%F).dump

Miniature view: to try it out, open this page on a computer.

Simulated data. The interface, shortcuts and behaviour are the real app's.

Product

Everything your team uses every day,
without switching tabs.

Personal and shared spaces

Everything is organised by spaces: a personal one for your own things and shared ones per team or client, with members by invitation. Inside each space, projects with their overview, tasks, documentation, meetings, credentials and activity.

Notes and living documentation

Collaborative Markdown editor with live cursors, code blocks, editable tables, diagrams and wiki links. Export to PDF or Word.

Tasks, Kanban and subtasks

Statuses customised per space, subtasks that close their parent, attachments, and a “My tasks” view with everything of yours.

Calendar and meetings

Meetings with agenda and video link, the team's days away, and two-way sync with Apple Calendar.

Credentials and secrets

Shared logins and .env files encrypted per project, with an audit trail of who looked at what.

Palette, tabs and desktop

⌘P jumps to anything. Internal tabs, multi-window and a native macOS app.

Built to work with AI agents

Access tokens and an agent API so Claude Code can document your project from the repository, edit the documentation without stepping on anyone, or propose evolutions. Skills ready to download.

Real time

Built for working at the same time.

Every change travels to every open window in milliseconds. No refreshing, no “someone else has this open”, no lost edits.

  • Live cursors and presence in notes and documentation
  • Boards, tasks and calendar update on their own
  • Edits merge without conflicts (CRDT)
  • Activity feed per project with what is new since your last visit
devotion · sync live

12:04:01 ana moved "Review permissions by role" In progress

12:04:02 marta created meeting "Demo with the client"

12:04:03 jorge editing "Deployment guide"

12:04:03 synced · 3 clients connected · 12 ms

Deployment

On your infrastructure, not ours.

Devotion is not sold by the seat on someone else's cloud. It is installed on your servers, with your domain and your identity provider, and it is tailored to your team: if you need a feature that does not exist yet, we build it for you.

  1. 01

    We talk

    Tell us about your team, how you work and where you want it to live: your own servers, a VM in your provider or a machine we prepare for you.

  2. 02

    We deploy

    Docker Compose on your infrastructure: relational database, cache, S3-compatible object storage and TLS on your domain. If you already run a reverse proxy or your own S3, we plug into them. Migrations run on their own on every update.

  3. 03

    Your team signs in

    With GitHub OAuth (or your organisation's) and an allowlist of who can get in. No passwords to manage, no open sign-up.

  4. 04

    We adapt it to you

    Updates, backups and support agreed with you. Need a new feature, an integration with your tools or a change in how something works? We build it into your deployment. And if one day you want to run it entirely on your own, the deployment is yours.

docker compose ps
proxyTLS on your domainhealthy
apilogic, permissions and audit trailhealthy
webthe app, in the browserhealthy
dbrelational · automatic migrationshealthy
syncreal-time sync across the teamhealthy
storageattachments · S3-compatiblehealthy
cachesessions and cachehealthy

Everything inside your network. Nothing leaves it.
Each piece can be swapped for the one you already run: your reverse proxy, your database, your S3.

Security

Private by design.

No passwords

You only get in with OAuth. No credentials to remember, none to leak.

Invitation only

An allowlist controls who can get in. No open sign-up, no anonymous accounts.

Real encryption

Tokens, shared credentials and secrets encrypted with AES-256-GCM at rest, with a key per project.

Your data, your servers

Deployed inside your network over TLS. Your data does not live in someone else's SaaS.

Contact

Shall we talk?

Tell us how many you are and where you would deploy it. We will tell you how Devotion fits your case and put together a deployment plan for your infrastructure.

Write to us

Deployments

Already running in production.

Organisations that have deployed Devotion on their own infrastructure and use it every day.

University of Zaragoza

Vice-Rectorate for Digital Strategy and Artificial Intelligence

Devotion manages every project the team develops: documentation, tasks, meetings and credentials, on the university's own servers.

In production