Textus
You hold the pen. AI keeps your ink flowing. Textus is a free, open-source, next-generation Markdown editor for macOS, Windows and Linux, with a writing assistant built in.
Track your goals on a single page and tell a coach what you did
AI summary · website content
ProductivityJavaScript · CSSGitHub @FlashDWOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A goals app with a coach you talk to. Make an account with a name and password and you get a dashboard:
Beside it (or behind the bar at the bottom on a phone) is the chat. Tell the
coach what happened, "did push day", "move the recipe to the top", "I tried
robotics club but it's not for me", and it updates the dashboard. Everything it
changes, and everything you tap, can be undone. A new account can tap "Start
from my plan" to add the plan in plan.json in one go. It's all saved in a
database, so it's there when you reload or log in from another device, and
everyone who signs up gets their own private dashboard.
Plain HTML, CSS and JavaScript in the browser, no framework and no build step, plus a few small server files that run on Vercel.
| File | What it does |
|---|---|
index.html | The page: the log-in box, the dashboard, and the chat |
style.css | How it looks, including phone layout and dark mode |
app.js | Logs you in, draws the dashboard, and sends chat messages |
week.js | Date math for weekly goals: this week's count and the streak |
plan.json | The plan "Start from my plan" adds to a new account |
api/signup.js, api/login.js, api/logout.js | Making an account, logging in and out |
api/me.js | Sends the page your dashboard and recent chat when it opens |
api/chat.js | Passes your message to Claude, which can update your dashboard |
api/edit.js | Taps on the page: ticking, moving or deleting a task, logging a workout, "Start from my plan" |
api/undo.js | The Undo button: reverses everything one chat reply or one tap changed |
lib/db.js | The database connection, and the tables (it creates and updates them itself, see "Changing the database" below) |
lib/auth.js | Password hashing and sign-in tokens |
lib/chat.js | The tools Claude (and the page) use to change goals, Next up, the Log and Tried |
lib/plan.js | Adds a whole plan at once, as one undoable change |
package.json | Tells Vercel to install the two libraries the server uses, and how to run the tests |
test/ | Automatic checks: passwords, the AI's tools, undo, and that nobody can touch someone else's list |
.github/workflows/test.yml | Runs the tests on GitHub for every pull request |
CHAT_PASSCODE setting; four random words make a good one), each
person can send at most 60 chat messages a day (DAILY_MESSAGE_LIMIT), and
everyone together at most 200 a day (TOTAL_DAILY_LIMIT). That total is the
real ceiling on the AI bill, because an invite code can be passed around.The AI part (steps 1 to 3) is already done if the old chat worked.
goal-dashboard.ANTHROPIC_API_KEY: the key from step 1.CHAT_PASSCODE: the invite code people type when they make an account.
Share it only with people you want using the app.ALLOWED_ORIGIN (only if the site isn't at https://flashdw.github.io):
the address of the site that may use the server.DATABASE_URL setting by itself. The tables are created automatically the
first time someone uses the app.SERVER_URL in app.js points at the Vercel project's main address,
https://goal-dashboard-one.vercel.app , which the GitHub Pages site uses. That
address also shows the whole app, so you can use either one.
lib/db.js keeps the database layout as a numbered list of steps
(MIGRATIONS). When the server starts it runs any step that hasn't run yet
and remembers it in a schema_migrations table, so there's still no SQL to
type by hand. To change the layout, add a new step at the end of the list.
Never edit a step that's already live: the database won't run it again.
npm test runs the checks. On your computer the database tests are skipped
unless TEST_DATABASE_URL points at an empty throwaway Postgres database
(never the real one, the tests wipe it). On GitHub every pull request runs all
of them automatically with a fresh database; a red X on the PR means something
broke.
The app needs its server, so python -m http.server isn't enough any more.
Install Node.js and the Vercel command line tool (npm i -g vercel), run
vercel link once, then vercel env pull (this copies the settings into a
local .env.local, which git ignores) and vercel dev. Open the address it
prints. Note this uses the same database as the live site.
To check the phone layout, open the browser's dev tools (F12) and turn on the device toolbar (Ctrl+Shift+M).