|
1 | 1 | # Evolu |
2 | 2 |
|
3 | | -Evolu is a TypeScript library and local-first platform. |
| 3 | +Evolu is a local-first platform designed for privacy, ease of use, and no vendor lock-in. It provides a set of libraries to build apps that work offline, sync automatically, and encrypt data end-to-end. |
4 | 4 |
|
5 | | -## Documentation |
| 5 | +[evolu.dev](https://www.evolu.dev) |
6 | 6 |
|
7 | | -For detailed information and usage examples, please visit [evolu.dev](https://www.evolu.dev). |
| 7 | +## Features |
8 | 8 |
|
9 | | -## Community |
| 9 | +- **Local-First**: Data lives on the device first. |
| 10 | +- **Privacy-Centric**: End-to-end encryption by default. |
| 11 | +- **Sync**: Automatic sync across devices using CRDTs. |
| 12 | +- **Typed**: Built with TypeScript for type safety. |
| 13 | +- **SQL**: SQLite support in the browser and on devices. |
10 | 14 |
|
11 | | -The Evolu community is on [GitHub Discussions](https://github.com/evoluhq/evolu/discussions), where you can ask questions and voice ideas. |
| 15 | +## Requirements |
12 | 16 |
|
13 | | -To chat with other community members, you can join the [Evolu Discord](https://discord.gg/2J8yyyyxtZ). |
| 17 | +- [Bun](https://bun.sh) (latest) |
| 18 | +- Node.js >= 22 |
14 | 19 |
|
15 | | -[](https://x.com/evoluhq) |
| 20 | +## Development |
16 | 21 |
|
17 | | -## Developing |
| 22 | +Evolu is a monorepo managed by **Turbo** and **Bun**. We use **Biome** for linting and formatting. |
18 | 23 |
|
19 | | -Evolu monorepo uses [pnpm](https://pnpm.io). |
| 24 | +### Getting Started |
20 | 25 |
|
21 | 26 | Install dependencies: |
22 | 27 |
|
| 28 | +```bash |
| 29 | +bun install |
23 | 30 | ``` |
24 | | -pnpm install |
25 | | -``` |
26 | | - |
27 | | -Build scripts |
28 | | - |
29 | | -- `pnpm build` - Build packages |
30 | | -- `pnpm build:web` - Build docs and web |
31 | | - |
32 | | -Web build notes |
33 | | - |
34 | | -- Uses webpack (`next build --webpack`) because SharedWorker is required. |
35 | | -- Uses `NODE_OPTIONS=--max-old-space-size-percentage=75` to avoid V8 heap OOM on large docs builds. |
36 | | -- On macOS Tahoe, you may need to raise Launch Services limits too (shell `ulimit -n` is not enough): |
37 | | - - `sudo launchctl limit maxfiles 262144 262144` |
38 | 31 |
|
39 | | -Start dev |
| 32 | +Start the development environment (web docs + examples): |
40 | 33 |
|
41 | | -> **Warning**: Run `pnpm build` before running dev. Packages must be built first. |
42 | | -
|
43 | | -- `pnpm dev` - Dev server for web |
44 | | -- `pnpm ios` - Run iOS example (requires `pnpm dev` running) |
45 | | -- `pnpm android` - Run Android example (requires `pnpm dev` running) |
46 | | - |
47 | | -Examples |
48 | | - |
49 | | -> **Note**: To work on examples with local packages, run `pnpm examples:toggle-deps` first. |
50 | | -
|
51 | | -- `pnpm examples:react-nextjs:dev` - Dev server for React Next.js example |
52 | | -- `pnpm examples:react-vite-pwa:dev` - Dev server for React Vite PWA example |
53 | | -- `pnpm examples:svelte-vite-pwa:dev` - Dev server for Svelte Vite PWA example |
54 | | -- `pnpm examples:vue-vite-pwa:dev` - Dev server for Vue Vite PWA example |
55 | | -- `pnpm examples:build` - Build all examples |
| 34 | +```bash |
| 35 | +bun dev |
| 36 | +``` |
56 | 37 |
|
57 | | -Linting |
| 38 | +### Scripts |
58 | 39 |
|
59 | | -- `pnpm lint` - Lint code |
60 | | -- `pnpm lint-monorepo` - Lint monorepo structure |
| 40 | +- **Linting**: `bun run lint` (Check code quality with Biome) |
| 41 | +- **Formatting**: `bun run format` (Apply formatting with Biome) |
| 42 | +- **Testing**: `bun run test` (Run tests with Vitest) |
| 43 | +- **Build**: `bun run build` (Build all packages) |
| 44 | +- **Clean**: `bun run clean` (Clean artifacts and node_modules) |
61 | 45 |
|
62 | | -Testing |
| 46 | +## Project Structure |
63 | 47 |
|
64 | | -- `pnpm test` - Run tests |
| 48 | +- `packages/` |
| 49 | + - `common`: Core logic, platform-agnostic. |
| 50 | + - `react`: React hooks and components. |
| 51 | + - `react-native`: React Native integration. |
| 52 | + - `web`: Web-specific implementations. |
| 53 | + - `server`: Sync and signaling server. |
| 54 | +- `apps/` |
| 55 | + - `web`: Documentation and website (Next.js). |
| 56 | +- `examples/`: Sample applications demonstrating usage. |
65 | 57 |
|
66 | | -Release |
| 58 | +## Community |
67 | 59 |
|
68 | | -- `pnpm changeset` - Describe changes for release log |
| 60 | +- [GitHub Discussions](https://github.com/evoluhq/evolu/discussions) |
| 61 | +- [Discord](https://discord.gg/2J8yyyyxtZ) |
| 62 | +- [X (Twitter)](https://x.com/evoluhq) |
69 | 63 |
|
70 | | -Verify |
| 64 | +## License |
71 | 65 |
|
72 | | -- `pnpm verify` - Run all checks (build, lint, test) before commit |
| 66 | +MIT |
0 commit comments