Wenlan
Wenlan은 소스 기반 AI 지식베이스·LLM 위키로, 문서·결정을 페이지화해 검색·검토·리뷰 가능
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
sYnX is a to-do list app
README 전체를 불러오는 중입니다.
README 전문 보기 ↗sYnX is a to-do list app for the web and Android. The web app is a Remix app on Cloudflare Workers with a Cloudflare D1 database. The Android app is built with Expo and React Native, and uses the same account and data through the web app's REST API. Both live in this repo.
Live at synx.christran.io.
Lists and tasks (web and mobile)
Checklist, Study, Shopping, Movies, Work, Personal, Travel, Fitness, or a custom one.5m to 60m presets or a custom value), and subtasks nested under their parent task.Sharing
Accounts and guest mode
auth.christran.io, with PKCE. Sessions renew in the background.Reminders and notifications
Web extras
For the Android app's extras, see Mobile app.
| Framework | Remix 2.17 (on Vite 5) with React 19, running on Cloudflare Workers with static assets |
| Database | Cloudflare D1 (synx-db, binding DB) |
| Styling | Tailwind CSS 3 |
| Auth | OpenAuth client (@openauthjs/openauth) against sYnID |
| Validation | Valibot |
| Tooling | Wrangler 4, TypeScript 5.8, ESLint 9 (flat config), Vitest 4 with @cloudflare/vitest-pool-workers |
server.ts is the Worker entry. Its fetch handler serves the Remix app, and its scheduled handler is the every-minute reminder cron (triggers.crons in wrangler.jsonc).
/api/v1)The mobile app uses these routes. They expect a sYnID access token in an Authorization: Bearer <token> header.
| Route | Methods |
|---|---|
/api/v1/lists | GET, POST |
/api/v1/lists/:id | GET, PUT, DELETE |
/api/v1/lists/:id/share-mode | PUT |
/api/v1/lists/:id/shared | DELETE (remove from Shared with me) |
/api/v1/todos | GET, POST |
/api/v1/todos/:id | PUT, DELETE |
/api/v1/todos/:id/completed | POST |
/api/v1/todos/:id/toggle | POST |
/api/v1/todos/:id/mark-reminder-sent | POST |
/api/v1/todos/clear-completed | POST |
/api/v1/settings | GET, PUT |
/api/v1/settings/time-zone | PUT |
/api/v1/devices | POST (register a push token), DELETE (unregister it) |
Set these on the Worker in the Cloudflare dashboard, or locally in a .dev.vars file (gitignored). Only DB is needed to run locally. Each notification channel is skipped when its secret isn't set.
| Name | Used for |
|---|---|
DB | D1 binding, set up in wrangler.jsonc |
OPENAUTH_ISSUER | sYnID issuer URL (defaults to https://auth.christran.io) |
CLIENT_ID_MAP | Optional JSON map from hostname to OAuth client ID (defaults to synx) |
SYNX_ALLOWED_CLIENT_IDS | Optional comma-separated list of accepted token audiences (defaults to synx) |
RESEND_API_KEY | Reminder emails and email-to-SMS |
TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_FROM_NUMBER | Text messages through Twilio, used when no carrier is set |
FIREBASE_SERVICE_ACCOUNT_JSON | Push notifications through FCM |
The Android app lives in mobile/. It's an Expo SDK 58 app (React Native 0.88, React 19.3) in the Expo project synx, owned by chris-tran, with the Android package io.christran.synx. It uses the production web app's /api/v1 routes.
Features
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗