208```
209โโโ backend/
210โ โโโ database/
211โ โ โโโ migrations.ts # Schema definitions
212โ โ โโโ queries.ts # DB query functions
270- Handle API calls properly with proper error catching
271
272### Database Patterns
273- Run migrations on startup or comment out for performance
274- Change table names when modifying schemas rather than altering
30- [ ] add triggers to sidebar
31- [ ] add upload from SQL, CSV and JSON
32- [ ] add ability to connect to a non-val town Turso database
33- [x] fix wonky sidebar separator height problem (thanks to @stevekrouse)
34- [x] make result tables scrollable
12 AIResponse
13} from "../shared/types.ts";
14import * as queries from "./database/queries.ts";
15import { migrate } from "./database/migrations.ts";
16import {
17 getCurrentDay,
18 fillImmediateCircumstancesPlaceholder
19} from "../../shared/utils.ts"
20import * as queries from "../database/queries.ts"
21
22export async function getTrackGuidance(
2import { getCurrentDay, getCurrentWeek, formatDate, getTodayDateFormatted } from "../../shared/utils.ts";
3import { Task, DailyLog, WeeklyReview } from "../../shared/types.ts";
4import * as queries from "../database/queries.ts";
5
6// Daily email configuration
128 <h2 className="text-xl font-semibold mb-4">First-Time Setup</h2>
129 <p className="mb-4">Welcome to your 21-Day Survival Plan Tracker! This tool will help you execute your plan across all five tracks and provide AI-guided accountability.</p>
130 <p className="mb-6">To get started, we need to set up the database.</p>
131 <button
132 className="w-full py-2 px-4 bg-blue-600 hover:bg-blue-700 text-white font-semibold rounded-md transition duration-300"
47## Setup
48
491. Initialize the database through the first-time setup wizard
502. Enter your personal situation (time availability, financial needs, obstacles, mental state)
513. Start tracking your daily progress and completing tasks
54## API Endpoints
55
56- `/api/migrate` - Run database migrations
57- `/api/tracks` - Get and update tracks
58- `/api/tasks` - Manage tasks
1// Script to set up the telegram_chats table in SQLite
2// Run this script manually to create the database table
3
4export default async function setupTelegramChatDb() {
25 `);
26
27 return "Telegram chat database table created successfully.";
28 } catch (error) {
29 console.error("Error setting up telegram_chats table:", error);
13## Technical Architecture
14
15**โ ๏ธ important caveat: the admin dashboard doesn't have auth! currently it just relies on security by obscurity of people not knowing the url to a private val. this is not very secure. if you fork this project and put sensitive data in a database you should think carefully about how to secure it.**
16
17Stevens has been designed with the utmost simplicity and extensibility, much like a well-organized household. At the heart of his operation lies a single "memories" table - a digital equivalent of a butler's meticulous records. This table serves as the foundation for all of Stevens' operations.
45- `dashboard`: the admin view for showing the memories notebook + visualizing imports
46- `dailyBriefing`: stuff related to sending a daily update via telegram
47- `dbUtils`: little one-off scripts for database stuff
48
49## Hiring your own Stevens
57- For the Google Calendar integration you'll need `GOOGLE_CALENDAR_ACCOUNT_ID` and `GOOGLE_CALENDAR_CALENDAR_ID`. See [these instuctions](https://www.val.town/v/stevekrouse/pipedream) for details.
58
59**important caveat: the admin dashboard doesn't have auth! currently it just relies on security by obscurity of people not knowing the url to a private val. this is not very secure, if you put sensitive data in a database you should think carefully about how to secure it.**
60
61Overall it's a simple enough project that I encourage you to just copy the ideas and run in your own direction rather than try to use it as-is.
4
5* `index.ts` - this is the **entrypoint** for this whole project
6* `database/` - this contains the code for interfacing with the app's SQLite database table
7
8## Hono
26## CRUD API Routes
27
28This app has two CRUD API routes: for reading and inserting into the messages table. They both speak JSON, which is standard. They import their functions from `/backend/database/queries.ts`. These routes are called from the React app to refresh and update data.
29
30## Errors