Sidera is a minimalist cosmic message board where anonymous thoughts become stars.
Users write a message, launch it into the void, and watch it appear as a brighter point in a black vertical starfield. Older signals stay in space, while the live console shows the latest transmissions in real time.
Sidera is built around a small ritual:
- write something you do not want to send to a real person;
- launch it into space instead;
- let it exist anonymously as a star among other drifting messages.
It is not a messenger and not a social network. It is a quiet visual place for release.
- minimalist black-space UI with animated nebula and stars;
- anonymous message creation;
- procedural destination stars with weighted distance ranges;
- clickable message-stars placed into sectors of up to
20stars per screen; - live console with time search and fading overflow;
- clean mode, sound toggle, signal receipt, and modal transitions;
- API-backed storage instead of mock data.
HTML5CSS3Vanilla JavaScriptNode.jsVercel FunctionsTurso / libSQL
Frontend:
index.htmlstyles.cssapp.js
Backend:
api/messages.mjsapi/destination-preview.mjs- shared logic in
lib/*.cjs
Storage:
Tursoin production- local
file:libSQL database for optional local fallback
GET /api/messagesGET /api/messages?after=<timestamp>GET /api/destination-previewPOST /api/messages
Example payload:
{
"message": "I needed to say this somewhere.",
"destination": {
"name": "Astra Reach",
"distance": 128.4,
"bucketKey": "mid"
}
}destination is optional. If omitted, the server generates one automatically.
Install dependencies:
npm installRun locally:
npm startThen open:
http://127.0.0.1:4173
If TURSO_DATABASE_URL is set, the app talks to Turso.
If it is not set, local development falls back to a local file database:
data/sidera.db
Create .env.local or set project variables in Vercel:
TURSO_DATABASE_URL=libsql://your-database-name-your-org.turso.io
TURSO_AUTH_TOKEN=your_turso_auth_token
Template:
.env.example
- Create a Turso database.
- Get the database URL.
- Create a Turso auth token.
- Create a Vercel project from this repository.
- Add
TURSO_DATABASE_URLandTURSO_AUTH_TOKENin Vercel Environment Variables. - Deploy.
Because the API is implemented in /api, Vercel will expose it automatically as serverless endpoints.
Typical flow:
turso db create sidera
turso db show sidera --url
turso db tokens create sideraUse the returned values in your local .env.local and in Vercel project settings.
.
├── api/
│ ├── destination-preview.mjs
│ └── messages.mjs
├── app.js
├── docs/
│ └── banner.svg
├── favicon.svg
├── index.html
├── lib/
│ ├── db.cjs
│ ├── destinations.cjs
│ └── messages.cjs
├── package.json
├── README.md
├── server.js
└── styles.css
server.jsis only for local development convenience;- production deployment is designed for
Vercel + Turso; data/is ignored by git and should not be committed;- old local database files like
unsent.dboraether.dbare leftovers from earlier naming stages and are not required by the current app.
- production deployment;
- custom social preview image;
- moderation and rate limiting;
- richer signal exploration and filtering.
License
2026 BERT info@tenyokj
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License, or any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.