Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
a2e02ef
improve: sentry initialization
LemonardoD Sep 24, 2025
4d5eeb8
fix: offline name update
LemonardoD Sep 24, 2025
6ed7bea
fix: uppy preview
LemonardoD Sep 24, 2025
0fbfc38
fix: preview render
LemonardoD Sep 24, 2025
2e88f0e
progress: auth code improvements
flipvh Sep 24, 2025
fb816b5
improve: PendingInvitations on offline
LemonardoD Sep 24, 2025
13da638
improve: more progress on auth improvements
flipvh Sep 24, 2025
a5f50fc
improve: invite flow
flipvh Sep 24, 2025
953cc27
fix: attachments publicity
LemonardoD Sep 25, 2025
8ef08cf
Git actions (#624)
flipvh Sep 25, 2025
346b5c8
test: Do not let storybook build, but only run test in github
gino1991 Sep 25, 2025
2602deb
Auth ref (#625)
flipvh Sep 26, 2025
01d47b3
chore: add todo
LemonardoD Sep 26, 2025
661d453
chore: add code for delete prev session not fully tested yet
LemonardoD Sep 26, 2025
57ce3e1
improve: FE dev script
LemonardoD Sep 26, 2025
d9ed5c6
fix: system invite
flipvh Sep 26, 2025
47e0812
fix: member invite
flipvh Sep 26, 2025
fdf216f
refactor: restructure auth helpers
flipvh Sep 26, 2025
54fcc67
fix: auth imports
flipvh Sep 26, 2025
96da59a
fixes
flipvh Sep 27, 2025
bbf3104
fix: new memberships order gaps
LemonardoD Sep 29, 2025
ccdbcad
Refactor/app error (#626)
LemonardoD Sep 30, 2025
1c6f4e4
chore: small fixes
LemonardoD Sep 30, 2025
45494ba
improve: progress on oauth
flipvh Sep 30, 2025
e74c29f
chore: add todo for create membership
flipvh Sep 30, 2025
2a1e2e0
chore: align auth endpoint naming
flipvh Sep 30, 2025
520b4f4
add: email response on app request (#627)
LemonardoD Sep 30, 2025
f033266
improve: ui tunings
flipvh Sep 30, 2025
6f8217f
Chore/auth todos (#628)
flipvh Sep 30, 2025
f90d63b
improve: avoid db connection on generate-openapi script
LemonardoD Oct 1, 2025
9d2999d
improve: styling passkey and session tiles in user settings page
flipvh Oct 1, 2025
0bccbc6
Chore/auth todos (#629)
LemonardoD Oct 1, 2025
9f61e82
improve: use lastUser as state for mfa
flipvh Oct 1, 2025
0f55bed
fix: pending count
LemonardoD Oct 2, 2025
536a0f5
fix(createMemberships): usage of existingUser membeship
LemonardoD Oct 2, 2025
ee36b8b
improve: auth store, remove context
flipvh Oct 2, 2025
04fb8e9
improve: better token handling
flipvh Oct 2, 2025
e788928
improve: css/styling
flipvh Oct 3, 2025
19b83a5
improve: openapi consistency
flipvh Oct 4, 2025
4d0f454
Refactor/sse (#630)
LemonardoD Oct 4, 2025
05ee764
Improve/open api (#633)
LemonardoD Oct 6, 2025
f312f63
chore: add account-security template for multiple scenarios
LemonardoD Oct 6, 2025
f72e758
fix: Tests (remove res.jons on empty responses)
gino1991 Oct 6, 2025
5afa171
Potential fix for code scanning alert no. 27: Workflow does not conta…
gino1991 Oct 7, 2025
240601d
Chore/update blocknote (#636)
LemonardoD Oct 7, 2025
1641ed6
fix: When not at least 2 prev tags → Use all commits, Else use second…
gino1991 Oct 7, 2025
22e0c33
Potential fix for code scanning alert no. 23: Workflow does not conta…
gino1991 Oct 7, 2025
5ee5245
Merge pull request #640 from cellajs/alert-autofix-23
gino1991 Oct 7, 2025
b24561b
Potential fix for code scanning alert no. 22: Workflow does not conta…
gino1991 Oct 7, 2025
23ebf39
Merge pull request #641 from cellajs/alert-autofix-22
gino1991 Oct 7, 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
199 changes: 199 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,199 @@
name: CI

permissions:
contents: read

# Controls which events and branches will trigger the workflow
on:
push:
branches: [ main ]
pull_request:
branches: [ main, development ]

# Cancel older runs of the same PR when a new push arrives
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
# Install deps once and reuse for other jobs (optional optimization)
install:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v5

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9

- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: 24
cache: 'pnpm'

- name: Create .env files
run: |
cp ./backend/.env.example ./backend/.env
cp ./frontend/.env.example ./frontend/.env

- name: Install dependencies
run: pnpm install --frozen-lockfile

# Save node_modules so other jobs can reuse
- name: Cache node_modules
uses: actions/cache@v3
with:
path: |
**/node_modules
key: ${{ runner.os }}-modules-${{ hashFiles('pnpm-lock.yaml') }}

# Runs linting
lint:
runs-on: ubuntu-latest
needs: install
steps:
- name: Checkout repo
uses: actions/checkout@v5

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9

- name: Setup Node.js
uses: actions/setup-node@v5
with:
cache: 'pnpm'

- name: Restore node_modules
uses: actions/cache@v3
with:
path: |
**/node_modules
key: ${{ runner.os }}-modules-${{ hashFiles('pnpm-lock.yaml') }}

- name: Run Biome
run: pnpm biome check .

# Runs all tests
test:
runs-on: ubuntu-latest
needs: install
steps:
- name: Checkout repo
uses: actions/checkout@v5

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9

- name: Setup Node.js
uses: actions/setup-node@v5
with:
cache: 'pnpm'

- name: Create .env files
run: |
cp ./backend/.env.example ./backend/.env
cp ./frontend/.env.example ./frontend/.env

- name: Restore node_modules
uses: actions/cache@v3
with:
path: |
**/node_modules
key: ${{ runner.os }}-modules-${{ hashFiles('pnpm-lock.yaml') }}
- run: pnpm test

# Will run a quick startup check to ensure the app starts without issues
quick:
runs-on: ubuntu-latest
needs: [lint, test]
steps:
- name: Checkout repo
uses: actions/checkout@v5

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9

- name: Setup Node.js
uses: actions/setup-node@v5

- name: Create .env files
run: |
cp ./backend/.env.example ./backend/.env
cp ./frontend/.env.example ./frontend/.env

- name: Restore node_modules
uses: actions/cache@v3
with:
path: |
**/node_modules
key: ${{ runner.os }}-modules-${{ hashFiles('pnpm-lock.yaml') }}

- name: Start quick and wait for Vite ready
run: |
timeout 120s stdbuf -oL pnpm quick 2>&1 | while IFS= read -r line; do
# Show all output for debugging
echo "$line"
# Remove ANSI escape codes
clean_line=$(echo "$line" | sed -r "s/\x1B\[[0-9;]*[mK]//g")
# Match "VITE <version> ready in <ms>" anywhere in the line
if echo "$clean_line" | grep -E ".*VITE [^ ]+ +ready in [0-9]+ ms"; then
echo ">>> Vite server is ready! <<<"
pkill -P $$ pnpm || true
break
fi
done || true

# Generates draft release notes (for testing only)
draft-release-notes:
permissions:
contents: read
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v5
with:
fetch-depth: 0 # needed so changelog sees full commit history

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9

- name: Setup Node.js
uses: actions/setup-node@v5

- name: Install changelog deps
run: pnpm add -Dw conventional-changelog-cli conventional-changelog-conventionalcommits

- name: Generate draft release notes
run: |
# Check latest and previous tags
LATEST_TAG=$(if [ "$(git tag | wc -l)" -ge 1 ]; then git describe --tags --abbrev=0; fi)
PREV_TAG=$(if [ "$(git tag | wc -l)" -ge 2 ]; then git tag --sort=creatordate | tail -2 | head -1; fi)

echo "Latest tag: $LATEST_TAG"
echo "Previous tag: $PREV_TAG"

if [ -z "$PREV_TAG" ]; then
echo "First release — include all commits"
npx conventional-changelog -p conventionalcommits -r 0 -o RELEASE_NOTES.md
else
echo "Generating changelog since previous tag $PREV_TAG"
# Use -r 2 and output commits since PREV_TAG
npx conventional-changelog -p conventionalcommits -r 2 -o RELEASE_NOTES.md
fi

- name: Upload draft release notes
uses: actions/upload-artifact@v4
with:
name: draft-release-notes
path: RELEASE_NOTES.md
53 changes: 53 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: Release
permissions:
contents: write

on:
push:
tags:
- "v*" # Runs only when pushing version tags like v1.0.0, v2.3.4

jobs:
release-notes:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v5
with:
fetch-depth: 0 # so changelog sees all commit history

- name: Setup pnpm
uses: pnpm/action-setup@v4

- name: Setup Node.js
uses: actions/setup-node@v5
with:
cache: "pnpm"

- name: Install changelog deps
run: pnpm add -Dw conventional-changelog-cli conventional-changelog-conventionalcommits

- name: Generate release notes
run: |
# Check latest and previous tags
LATEST_TAG=$(if [ "$(git tag | wc -l)" -ge 1 ]; then git describe --tags --abbrev=0; fi)
PREV_TAG=$(if [ "$(git tag | wc -l)" -ge 2 ]; then git tag --sort=creatordate | tail -2 | head -1; fi)

echo "Latest tag: $LATEST_TAG"
echo "Previous tag: $PREV_TAG"

if [ -z "$PREV_TAG" ]; then
echo "First release — include all commits"
npx conventional-changelog -p conventionalcommits -r 0 -o RELEASE_NOTES.md
else
echo "Generating changelog since previous tag $PREV_TAG"
# Use -r 2 and output commits since PREV_TAG
npx conventional-changelog -p conventionalcommits -r 2 -o RELEASE_NOTES.md
fi

- name: Publish GitHub Release
uses: softprops/action-gh-release@v2
with:
body_path: RELEASE_NOTES.md
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
16 changes: 7 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@
</div>

> [!CAUTION]
> This is a prerelease. It does NOT meet production requirements yet and large breaking changes occur regularly. Versioned releases will begin once we have solid tests for authentication, authorization and data access. Want to contribute or discuss cella with us? Let's connect! ✉️ <[email protected]>
> This is a prerelease. Versioned releases will start once we have enough tests for authentication, authorization and data access. Want to contribute or discuss cella with us? Let's connect! ✉️ <[email protected]>

#### Contents
- [Installation](#installation)
- [Create app](#create-app)
- [Architecture](/info/ARCHITECTURE.md)
- [Roadmap](/info/ROADMAP.md)
- [Deployment](/info/DEPLOYMENT.md)
Expand All @@ -47,18 +47,18 @@

<br>

## Create your own app
Want to try cella to build a new web app with sync engine? We recommend NOT TO FORK this repo directly. Instead, use the create CLI to get started:
## Create app
Do **not fork** this repo directly. Use the create CLI to get started:

```bash
pnpm create @cellajs/cella@latest
pnpm create @cellajs/cella
```

You now have an implementation-ready web app 🤯. But ... without any unique functionality 🤓. Read the [Quickstart](/info/QUICKSTART.md) so you can build something unique quickly.

<p>&nbsp;</p>

## Installation
## Contribute
For those that (also) want to participate in development:

```bash
Expand Down Expand Up @@ -89,8 +89,6 @@ pnpm dev

Check it out at [localhost:3000](http://localhost:3000)! Generated API docs can be found at [localhost:4000/docs](http://localhost:4000/docs). Manage your local db with [local.drizzle.studio](http:local.drizzle.studio).


<br />
<br />
<p>&nbsp;</p>

💙💛 Big thank you to [drizzle](https://github.com/drizzle-team/drizzle-orm), [hono](https://github.com/honojs/hono), [tanstack-router](https://github.com/tanstack/router) & [electric](https://github.com/electric-sql/electric).
Loading
Loading