Skip to content
Open
Show file tree
Hide file tree
Changes from 45 commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
2f63ff3
Add bank account transaction integration
alexanderwassbjer Oct 24, 2024
11b877e
Fixup indent
alexanderwassbjer Oct 26, 2024
37a3235
Correct types
alexanderwassbjer Oct 26, 2024
f920861
Refactor some new code
alexanderwassbjer Oct 26, 2024
5bfae3a
Add missing env in docker compose file
alexanderwassbjer Oct 26, 2024
a1caeed
Remove duplicates of docker files
alexanderwassbjer Oct 27, 2024
25fc9fa
Update env to not use NEXT_PUBLIC
alexanderwassbjer Oct 27, 2024
88133e9
Revert the country code in getInstitutions
alexanderwassbjer Oct 27, 2024
b1c45b1
Refactor a on transaction row click function
alexanderwassbjer Oct 27, 2024
269e169
Remove unused imports/consts to make lint happy
alexanderwassbjer Oct 27, 2024
be23003
Fixed some comments from Fredrik
alexanderwassbjer Oct 27, 2024
2c5fb1f
Revert theme support
alexanderwassbjer Oct 27, 2024
45d23ba
Fix bug with floating numbers on exact split calculator
alexanderwassbjer Oct 27, 2024
12cb87d
Merge pull request #1 from alexanderwassbjer/bugfix/floating-numbers
alexanderwassbjer Oct 29, 2024
0bccdc8
Add verified transaction label
alexanderwassbjer Oct 29, 2024
421b40e
Merge branch 'main' of github.com:alexanderwassbjer/split-pro
alexanderwassbjer Oct 29, 2024
17d6fa1
Fixup linebreak in transactions list
alexanderwassbjer Oct 29, 2024
d1aeb41
Order by expense created date in the groups list
alexanderwassbjer Oct 29, 2024
0e9a540
Redirect to groupexpense or expense in activity list based on groupId
alexanderwassbjer Oct 29, 2024
c00ec9d
Fixup transaction row
alexanderwassbjer Oct 29, 2024
62b71f1
Make the checkbox bigger on mobile
alexanderwassbjer Oct 30, 2024
b25422e
Make expenses lines thicker
alexanderwassbjer Oct 30, 2024
74d1bb5
Merge pull request #2 from alexanderwassbjer/feature/order-by-expense…
alexanderwassbjer Oct 31, 2024
8ba44a9
Merge branch 'main' into feature/redirect-expense-page-activity-list-…
alexanderwassbjer Oct 31, 2024
b70c2e7
Merge pull request #3 from alexanderwassbjer/feature/redirect-expense…
alexanderwassbjer Oct 31, 2024
f860add
Fixup
alexanderwassbjer Nov 1, 2024
5b28495
Add isloading to submit all on bank transaction to prevent adding mul…
alexanderwassbjer Aug 8, 2025
bc18bff
Fix
alexanderwassbjer Aug 8, 2025
b373a91
Merge remote-tracking branch 'oss-apps/main'
alexanderwassbjer Aug 8, 2025
8bd0abb
Make changes so it works with new versions of splitpro
alexanderwassbjer Aug 8, 2025
ddb21f6
Merge branch 'main' of github.com:oss-apps/split-pro
alexanderwassbjer Aug 26, 2025
2ca9ed7
Add missing translations
alexanderwassbjer Aug 26, 2025
4e52d2e
Update to new code
alexanderwassbjer Aug 27, 2025
d146267
Add missing translations
alexanderwassbjer Aug 27, 2025
a407a69
Merge branch 'main' of github.com:oss-apps/split-pro
alexanderwassbjer Aug 27, 2025
98929c4
Fix lint
alexanderwassbjer Aug 27, 2025
7711c43
Change translations
alexanderwassbjer Aug 27, 2025
b6c89b6
Make it compile
alexanderwassbjer Aug 27, 2025
6143f34
Changes from codereview
alexanderwassbjer Aug 29, 2025
f2ee70b
Merge branch 'main' of github.com:oss-apps/split-pro
alexanderwassbjer Aug 29, 2025
534299c
Add translations for feature on homepage
alexanderwassbjer Aug 29, 2025
21f5696
Move the envs to page hoc
alexanderwassbjer Aug 29, 2025
fabada1
Refactor to make it easier to add more providers
alexanderwassbjer Aug 29, 2025
b2546c8
Reuse
alexanderwassbjer Aug 29, 2025
afa321f
Fix ts error
alexanderwassbjer Aug 29, 2025
3e873a0
poc with pg_cron
alexanderwassbjer Aug 30, 2025
4408050
Remove the testing cron job
alexanderwassbjer Aug 30, 2025
7d01ea1
Refactor to make it even easier to add more providers
alexanderwassbjer Aug 30, 2025
c70e015
Move some reusable code
alexanderwassbjer Aug 31, 2025
1fbb1f5
User language to gocardless session
alexanderwassbjer Aug 31, 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
7 changes: 7 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,13 @@ EMAIL_SERVER_PORT=
EMAIL_SERVER_USER=
EMAIL_SERVER_PASSWORD=

# GoCardless options
GOCARDLESS_COUNTRY=
GOCARDLESS_SECRET_ID=
GOCARDLESS_SECRET_KEY=
# Bank Transactions will be fetched from today and 30 days back as default.
GOCARDLESS_INTERVAL_IN_DAYS=

# Google Provider : https://next-auth.js.org/providers/google
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
Expand Down
1 change: 1 addition & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
pnpm lint-staged
pnpm tsc --noEmit
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
22.16.0
22.16.0
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ pnpm i
- Copy the env.example file into .env
- Setup google oauth required for auth https://next-auth.js.org/providers/google or Email provider by setting SMTP details
- Login to minio console using `splitpro` user and password `password` and [create access keys](http://localhost:9001/access-keys/new-account) and the R2 related env variables
- If you want to use bank integration please create a free account on [GoCardless](https://gocardless.com/bank-account-data/) and then enter the the related env variables

### Run the app

Expand Down
4 changes: 4 additions & 0 deletions docker/prod/compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ services:
- EMAIL_SERVER_PORT=${EMAIL_SERVER_PORT}
- EMAIL_SERVER_USER=${EMAIL_SERVER_USER}
- EMAIL_SERVER_PASSWORD=${EMAIL_SERVER_PASSWORD}
- GOCARDLESS_COUNTRY=${GOCARDLESS_COUNTRY}
- GOCARDLESS_SECRET_ID=${GOCARDLESS_SECRET_ID}
- GOCARDLESS_SECRET_KEY=${GOCARDLESS_SECRET_KEY}
- GOCARDLESS_INTERVAL_IN_DAYS=${GOCARDLESS_INTERVAL_IN_DAYS}
- GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}
- GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET}
- AUTHENTIK_ID=${AUTHENTIK_ID}
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
"next-i18next": "^15.4.2",
"next-themes": "^0.2.1",
"nodemailer": "^6.9.8",
"nordigen-node": "^1.4.1",
"radix-ui": "^1.4.2",
"react": "19.1.0",
"react-day-picker": "^9.7.0",
Expand Down
75 changes: 75 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
-- AlterTable
ALTER TABLE "Expense" ADD COLUMN "transactionId" TEXT;

-- AlterTable
ALTER TABLE "User" ADD COLUMN "bankingId" TEXT,
ADD COLUMN "obapiProviderId" TEXT;

-- CreateTable
CREATE TABLE "CachedBankData" (
"id" SERIAL NOT NULL,
"obapiProviderId" TEXT NOT NULL,
"data" TEXT NOT NULL,
"userId" INTEGER NOT NULL,
"lastFetched" TIMESTAMP(3) NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,

CONSTRAINT "CachedBankData_pkey" PRIMARY KEY ("id")
);

-- CreateIndex
CREATE UNIQUE INDEX "CachedBankData_obapiProviderId_key" ON "CachedBankData"("obapiProviderId");
13 changes: 13 additions & 0 deletions prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ model User {
id Int @id @default(autoincrement())
name String?
email String? @unique
obapiProviderId String?
bankingId String?
emailVerified DateTime?
image String?
currency String @default("USD")
Expand All @@ -66,6 +68,16 @@ model User {
updatedExpenses Expense[] @relation("UpdatedByUser")
}

model CachedBankData {
id Int @id @default(autoincrement())
obapiProviderId String @unique
data String
userId Int
lastFetched DateTime
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}

model VerificationToken {
identifier String
token String @unique
Expand Down Expand Up @@ -161,6 +173,7 @@ model Expense {
updatedByUser User? @relation(name: "UpdatedByUser", fields: [updatedBy], references: [id], onDelete: SetNull)
expenseParticipants ExpenseParticipant[]
expenseNotes ExpenseNote[]
transactionId String?

@@index([groupId])
@@index([paidBy])
Expand Down
7 changes: 7 additions & 0 deletions public/locales/de/account_page.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,13 @@
"support_us": "Unterstütze uns",
"follow_on_x": "Folge uns auf X",
"logout": "Abmelden",
"choose_bank_provider": "Bankanbieter auswählen",
"select_bank_provider": "Bankanbieter auswählen",
"search_bank": "Bank suchen",
"no_bank_providers_found": "Keine Bankanbieter gefunden",
"to_bank": "an die Bank",
"reconnect": "Wieder verbinden",
"connect": "Verbinden",
"edit_name": {
"title": "Namen bearbeiten",
"placeholder": "Name eingeben"
Expand Down
7 changes: 7 additions & 0 deletions public/locales/de/expense_details.json
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,13 @@
"are_settled_up": "bist ausgeglichen",
"is_settled_up": "ist ausgeglichen"
},
"verified_transaction": "Verifizierte Transaktion",
"clear": "Löschen",
"bank_transactions": "Transaktionen",
"submit_all": "Alle senden",
"pending": "Ausstehend",
"no_transactions_yet": "Noch keine Transaktionen",
"already_added": "Bereits hinzugefügt",
"errors": {
"amount_required": "Betrag eingeben",
"description_required": "Beschreibung eingeben",
Expand Down
4 changes: 4 additions & 0 deletions public/locales/de/home.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,10 @@
"i18": {
"title": "Internationalisierung",
"description": "Verfügbar in mehreren Sprachen, um das Teilen von Ausgaben weltweit zugänglich zu machen"
},
"bank_connection": {
"title": "Bankverbindung",
"description": "Füge Ausgaben schneller hinzu mit einer Integration in GoCardless Bankkonto-Transaktions-API"
}
},
"footer": {
Expand Down
7 changes: 7 additions & 0 deletions public/locales/en/account_page.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,13 @@
"support_us": "Sponsor us",
"follow_on_x": "Follow us on X",
"logout": "Logout",
"choose_bank_provider": "Choose bank provider",
"select_bank_provider": "Select bank provider",
"search_bank": "Search bank",
"no_bank_providers_found": "No bank providers found",
"to_bank": "to bank",
"reconnect": "Reconnect",
"connect": "Connect",
"edit_name": {
"title": "Edit name",
"placeholder": "Enter name"
Expand Down
7 changes: 7 additions & 0 deletions public/locales/en/expense_details.json
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,13 @@
"are_settled_up": "are settled up",
"is_settled_up": "is settled up"
},
"verified_transaction": "Verified transaction",
"clear": "Clear",
"bank_transactions": "Bank transactions",
"submit_all": "Submit all",
"pending": "Pending",
"no_transactions_yet": "No transactions yet",
"already_added": "Already added",
"errors": {
"amount_required": ""
}
Expand Down
4 changes: 4 additions & 0 deletions public/locales/en/home.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,10 @@
"i18": {
"title": "Internationalization",
"description": "Available in multiple languages to make expense splitting accessible worldwide"
},
"bank_connection": {
"title": "Bank connection",
"description": "Add expenses faster with a integration to GoCardless bank account transactions api"
}
},
"footer": {
Expand Down
Loading