Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
fd8c457
feat: initial dashboard commit
ImGajeed76 Jun 6, 2025
d074682
feat: simple login flow
ImGajeed76 Jun 6, 2025
365d185
feat: custom jwt generation
ImGajeed76 Jun 6, 2025
31bcbb8
feat: added public jwks endpoint
ImGajeed76 Jun 6, 2025
8940f7b
feat: implemented user creation in spacetimedb
ImGajeed76 Jun 6, 2025
5fcd314
feat: improved spacetimedb security
ImGajeed76 Jun 7, 2025
ea83acc
Merge commit 'c0881a763a1658d5ac001fc6bf6ca944ab9099cd' as 'SpacetimeDB'
ImGajeed76 Jun 8, 2025
c0881a7
Squashed 'SpacetimeDB/' content from commit 1fb0e102
ImGajeed76 Jun 8, 2025
875ebbe
feat: added scripts for setup and styleguide
ImGajeed76 Jun 8, 2025
894d78e
feat: added scripts for setup and styleguide
ImGajeed76 Jun 8, 2025
8c2145b
fix: tsconfig and linting for .well-known
ImGajeed76 Jun 8, 2025
bf98812
feat: improved setup screen and master password persistency
ImGajeed76 Jun 8, 2025
4624beb
feat: added unlock and recovery screen
ImGajeed76 Jun 8, 2025
e93cad8
feat: moved from server side spacetime to client side
ImGajeed76 Jun 9, 2025
43c0c68
fix: rust fmt
ImGajeed76 Jun 9, 2025
12256fa
feat: added signing check for updating keys
ImGajeed76 Jun 9, 2025
c9b3d17
feat: new theme and updated env variable
ImGajeed76 Jun 10, 2025
b2ea16f
Squashed 'SpacetimeDB/' changes from 1fb0e102..b9bbe793
ImGajeed76 Jul 7, 2025
f497e53
Merge commit 'b2ea16f2de087b0718db731e961bf005d8993c47' into feat/das…
ImGajeed76 Jul 7, 2025
c89a084
feat: first approach to new cli
ImGajeed76 Jul 7, 2025
32e8e5f
fix: updated name to AxonotesCore
ImGajeed76 Jul 7, 2025
1e6fe90
feat: organized server structure
ImGajeed76 Jul 7, 2025
5dbabb4
fix: updated formatting
ImGajeed76 Jul 7, 2025
04c5cee
feat: implemented desktop auth flow
ImGajeed76 Jul 8, 2025
f942f72
feat: initial tauri setup
ImGajeed76 Jul 8, 2025
07f118b
feat: tailwindcss setup
ImGajeed76 Jul 8, 2025
1d7414a
feat: initial tauri setup
ImGajeed76 Jul 8, 2025
e90b693
feat: simple working auth flow
ImGajeed76 Jul 9, 2025
d9f9119
feat: implemented oauth pkce flow instead of deeplink
ImGajeed76 Jul 10, 2025
00ab876
feat: implemented oauth pkce flow instead of deeplink
ImGajeed76 Jul 10, 2025
fd00aa5
feat: removed old rust cli
ImGajeed76 Jul 11, 2025
113d331
feat: NEW CONFIG SYSTEM
ImGajeed76 Jul 11, 2025
2730236
feat: formatted code
ImGajeed76 Jul 11, 2025
925862c
feat: using now axogen
ImGajeed76 Jul 21, 2025
99bd777
feat: migrated to axogen
ImGajeed76 Aug 4, 2025
d13c80c
feat: removed SpacetimeDB subtree
ImGajeed76 Aug 6, 2025
c9cd2e7
feat: simple auth flow in tauri app
ImGajeed76 Aug 8, 2025
183e71f
feat: tailwindcss + issue fix + refresh desktop
ImGajeed76 Aug 9, 2025
d59e724
feat: desktop refresh + multi user
ImGajeed76 Aug 9, 2025
3a0b11c
feat: changed to zod and little cleanup
ImGajeed76 Sep 13, 2025
148c223
fix: coderabbit suggestions
ImGajeed76 Sep 13, 2025
7c17105
format: server.ts
ImGajeed76 Sep 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,9 @@ ehthumbs.db
*.key
credentials.*
secrets.*

# --- Build outputs ---
bin

# --- Node ---
node_modules
27 changes: 27 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Ignore the entire SpacetimeDB subtree
SpacetimeDB/

# Build artifacts and dependencies
build
bin
.svelte-kit
dist
target
node_modules

# IDE folders
.vscode/
.idea/
*.sublime-workspace
*.sublime-project
.project
.classpath
.cproject
.settings/

# Package Manager Lockfiles
package-lock.json
pnpm-lock.yaml
yarn.lock
bun.lock
bun.lockb
11 changes: 11 additions & 0 deletions .prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"printWidth": 80,
"tabWidth": 4,
"semi": true,
"singleQuote": false,
"trailingComma": "es5",
"bracketSpacing": false,
"arrowParens": "always",
"bracketSameLine": false,
"plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"]
}
159 changes: 159 additions & 0 deletions DEVELOPING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
# axonotes Core: Developer Setup Guide

This guide provides instructions for developers to set up the environment, run the project, and contribute to the
`axonotes Core` monorepo.

## 1. Prerequisites

Before you begin, ensure you have the following tools installed on your system.

- **Rust Toolchain:** Required for the SpacetimeDB backend and CLI. You can install it using `rustup`.
- [Install Rust](https://www.rust-lang.org/tools/install)
- **Node.js and Bun:** Required for the SvelteKit frontend, Tauri desktop app, scripts, and dependency management. We use `bun` as the
package manager and runtime.
- [Install Node.js](https://nodejs.org/en/download)
- [Install Bun](https://bun.sh/docs/installation)
- **Tauri Prerequisites:** Required for the desktop application. Follow the official Tauri v2 setup guide for your operating system.
- [Tauri v2 Prerequisites](https://v2.tauri.app/start/prerequisites/)
- **SpacetimeDB CLI:** Required for starting the server.
- [SpacetimeDB](https://spacetimedb.com/install)
- **(Optional) WebAssembly binaryen**: Makes the spacetime server code faster.
- [WebAssembly Binaryen](https://github.com/WebAssembly/binaryen/releases)

## 2. Initial Project Setup

Follow these steps to get the project configured on your local machine.

1. **Clone the Repository**
Clone the `axonotesCore` repository to your local machine.

```sh
git clone https://github.com/axonotes/AxonotesCore.git
cd AxonotesCore
```

2. **Install Root Dependencies**
Install the root-level development dependencies, which include tools like `prettier`, `eslint`, `husky`, and most importantly `@axonotes/axogen`.

```sh
bun install
```

3. **Create Environment Configuration**
Create a `.env.axogen` file in your project root. This file will contain your local environment variables:

```sh
touch .env.axogen
```

**Important:** Add `.env.axogen` to your `.gitignore` file if it's not already there! It's just like any other `.env` file - you don't want to push your secrets to git.

4. **Configure WorkOS**

**WorkOS Setup for Testing:**

1. Create a free WorkOS account: https://workos.com/signin
2. Get your credentials from the dashboard:
- Navigate to "API Keys" section
- Copy your Client ID and API Key (starts with `sk_`)
3. Configure redirect URI:
- Go to "Redirects" section in dashboard
- Add: `http://localhost:5173/auth/callback`
4. Fill out your `.env.axogen` file with your credentials:
```env
WORKOS_CLIENT_ID="your_client_id_here"
WORKOS_API_KEY="your_api_key_here"
```

**Note:** The setup process will generate other required keys automatically. Only WorkOS credentials need manual setup.

5. **Setup The Project**
Run the automated setup process, which will install dependencies for all sub-projects, build required tools, and generate configuration files:

```sh
bunx @axonotes/axogen run setup
```

6. **Log in to SpacetimeDB**
Before you can publish backend modules, authenticate with SpacetimeDB:

```sh
bunx @axonotes/axogen run sdb login
```

This will open a browser window for you to log in or create a SpacetimeDB account.

7. **Generate Required Files**
As a final step, generate all files with axogen:

```sh
bunx @axonotes/axogen generate
```

## 3. Running the Development Environment

The development workflow involves running a local server, publishing your modules to generate client code, and then
running the frontend applications.

### Step 1: Start the Backend Server

In your first terminal window, start the local SpacetimeDB server:

```sh
# Terminal 1
bunx @axonotes/axogen run sdb server dev --in-memory
```

### Step 2: Publish Backend Modules

In a second terminal, publish the backend modules. This generates the TypeScript client bindings that the frontend
needs:

```sh
# Terminal 2
bunx @axonotes/axogen run sdb server publish
```

### Step 3: Start the Frontend Applications

Once the modules are published and bindings are generated, you can start either or both frontend applications:

**Dashboard (SvelteKit web app):**

```sh
# Terminal 2 or 3
bunx @axonotes/axogen run dash dev
```

**Desktop App (Tauri):**

```sh
# Terminal 3 or 4
bunx @axonotes/axogen run app dev
```

### Making Changes

- **When you change backend code (`/server` directory):** Re-run the publish command to regenerate TypeScript bindings:
```sh
bunx @axonotes/axogen run sdb server publish
```
- **When you change the core SpacetimeDB engine code (`/SpacetimeDB` subtree):** Restart the local server to rebuild the
binaries:
```sh
# In Terminal 1, press Ctrl+C, then:
bunx @axonotes/axogen run sdb server dev --in-memory
```

You can modify these settings as needed for your development environment.

### Axogen

If you need help understanding axogen, look at the [docs](https://axonotes.github.io/axogen/docs/intro). Axogen is our configuration management tool that handles environment variables, builds, and common development tasks.

## 4. Project Structure

- **`/dashboard`**: SvelteKit web application for the dashboard interface
- **`/app`**: Tauri desktop application built with SvelteKit frontend
- **`/server`**: SpacetimeDB backend modules written in Rust
- **`/SpacetimeDB`**: Git subtree of the SpacetimeDB engine (for custom modifications)
Loading