Artoshiru is a cross-platform personal finance tracking app built with SvelteKit, Hono, oRPC, React Native, and TailwindCSS, structured in a monorepo setup.
From "Artos" (ᮃᮁᮒᮧᮞ᮪ - Sundanese for money) + "Shirusu" (記す / しるす - Japanese for to record or to note down)
The app's purpose is to provide a clear and efficient way to track your financial records.
- TypeScript - For type safety and improved developer experience
- SvelteKit - Web framework for building Svelte apps
- React Native - Build mobile apps using React
- Expo - Tools for React Native development
- TailwindCSS - Utility-first CSS for rapid UI development
- shadcn/ui - Reusable UI components
- Hono - Lightweight, performant server framework
- oRPC - End-to-end type-safe APIs with OpenAPI integration
- Bun - Runtime environment
- Drizzle - TypeScript-first ORM
- SQLite/Turso - Database engine
- Authentication - Email & password authentication with Better Auth
- Husky - Git hooks for code quality
- Turborepo - Optimized monorepo build system
Install dependencies:
bun installGenerate UI components with shadcn:
bun generate:shadcnThis project uses SQLite with Drizzle ORM.
- Start the local SQLite database:
cd apps/server && bun db:local-
Update your
.envfile in theapps/serverdirectory with the appropriate connection details if needed. -
Apply the schema to your database:
bun db:pushThen, run the development server:
bun devOpen http://localhost:5173 in your browser to see the web application.
The API is running at http://localhost:3000.
Use the Expo Go app to run the mobile application.
artoshiru/
├── apps/
│ ├── web/ # Frontend application (SvelteKit)
│ ├── native/ # Mobile application (React Native, Expo)
│ └── server/ # Backend API (Hono, ORPC)
│
├── packages/
│ ├── eslint-config/ # Shared ESLint config
│ └── svelte/ # Shared Svelte libraries
| Script | Description |
|---|---|
bun dev |
Start all applications in development mode |
bun dev:web |
Start only the web application |
bun dev:server |
Start only the backend server |
bun dev:native |
Start the React Native/Expo development server |
bun dev:web:server |
Start the web application and backend server |
bun run build |
Build all applications |
bun db:push |
Push schema changes to database |
bun db:studio |
Open Drizzle Studio UI |
bun format |
Format codebase using Prettier |
bun lint |
Run ESLint checks |
bun check-types |
Check TypeScript types |
bun generate:shadcn |
Generate reusable shadcn/ui component |
bun shadcn |
Alias for shadcn CLI |
cd apps/server && bun db:local |
Start the local SQLite database |
Contributions are welcome! Feel free to open issues or PRs.