mirror of
https://github.com/spliit-app/spliit.git
synced 2026-02-08 08:36:12 +01:00
* Extract ExpenseCard vom ExpenseList * Implement simple pagination of expenses (see #30) - display only this year's entries by default - a "Show more" button reveals all expenses * Turn getPrisma() into constant "prisma" - getPrisma() is not async and doesn't need to be awaited - turn getPrisma() into exported constant "prisma" * Select fields to be returned by getGroupExpenses() - make JSON more concise and less redundant - some properties were removed (i.e.instead of "expense.paidById" use "expense.paidBy.id") * Remove "participants" from ExpenseCard - no need to search for participant by id to get it's name - name property is already present in expense * Add option to fetch a slice of group expenses - specify offset and length to get expenses for [offset, offset+length[ - add function to get total number of group expenses * Add api route for client to fetch group expenses * Remove "Show more" button from expense list * Implement infinite scroll - in server component Page - only load first 200 expenses max - pass preloaded expenses and total count - in client component ExpenseList, if there are more expenses to show - test if there are more expenses - append preloading "skeletons" to end of list - fetch more expenses when last item in list comes into view - after each fetch increase fetch-length by factor 1.5 - rationale: db fetch usually is not the issue here, the longer the list gets, the longer react needs to redraw * Use server action instead of api endpoint * Fixes --------- Co-authored-by: Sebastien Castiel <sebastien@castiel.me>
81 lines
2.4 KiB
JSON
81 lines
2.4 KiB
JSON
{
|
|
"name": "spliit2",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"scripts": {
|
|
"dev": "next dev",
|
|
"build": "next build",
|
|
"start": "next start",
|
|
"lint": "next lint",
|
|
"check-types": "tsc --noEmit",
|
|
"check-formatting": "prettier -c src",
|
|
"prettier": "prettier -w src",
|
|
"postinstall": "prisma migrate deploy && prisma generate",
|
|
"build-image": "./scripts/build-image.sh",
|
|
"start-container": "docker compose --env-file container.env up"
|
|
},
|
|
"dependencies": {
|
|
"@hookform/resolvers": "^3.3.2",
|
|
"@prisma/client": "^5.6.0",
|
|
"@radix-ui/react-checkbox": "^1.0.4",
|
|
"@radix-ui/react-collapsible": "^1.0.3",
|
|
"@radix-ui/react-dialog": "^1.0.5",
|
|
"@radix-ui/react-dropdown-menu": "^2.0.6",
|
|
"@radix-ui/react-hover-card": "^1.0.7",
|
|
"@radix-ui/react-icons": "^1.3.0",
|
|
"@radix-ui/react-label": "^2.0.2",
|
|
"@radix-ui/react-popover": "^1.0.7",
|
|
"@radix-ui/react-radio-group": "^1.1.3",
|
|
"@radix-ui/react-select": "^2.0.0",
|
|
"@radix-ui/react-slot": "^1.0.2",
|
|
"@radix-ui/react-tabs": "^1.0.4",
|
|
"@radix-ui/react-toast": "^1.1.5",
|
|
"@tailwindcss/typography": "^0.5.10",
|
|
"class-variance-authority": "^0.7.0",
|
|
"clsx": "^2.0.0",
|
|
"cmdk": "^0.2.0",
|
|
"content-disposition": "^0.5.4",
|
|
"dayjs": "^1.11.10",
|
|
"embla-carousel-react": "^8.0.0-rc21",
|
|
"lucide-react": "^0.290.0",
|
|
"nanoid": "^5.0.4",
|
|
"next": "^14.1.0",
|
|
"next-s3-upload": "^0.3.4",
|
|
"next-themes": "^0.2.1",
|
|
"next13-progressbar": "^1.1.1",
|
|
"openai": "^4.25.0",
|
|
"pg": "^8.11.3",
|
|
"react": "^18.2.0",
|
|
"react-dom": "^18.2.0",
|
|
"react-hook-form": "^7.47.0",
|
|
"react-intersection-observer": "^9.8.0",
|
|
"sharp": "^0.33.2",
|
|
"tailwind-merge": "^1.14.0",
|
|
"tailwindcss-animate": "^1.0.7",
|
|
"ts-pattern": "^5.0.6",
|
|
"uuid": "^9.0.1",
|
|
"vaul": "^0.8.0",
|
|
"zod": "^3.22.4",
|
|
"prisma": "^5.7.0"
|
|
},
|
|
"devDependencies": {
|
|
"@total-typescript/ts-reset": "^0.5.1",
|
|
"@types/content-disposition": "^0.5.8",
|
|
"@types/node": "^20",
|
|
"@types/pg": "^8.10.9",
|
|
"@types/react": "^18.2.48",
|
|
"@types/react-dom": "^18.2.18",
|
|
"@types/uuid": "^9.0.6",
|
|
"autoprefixer": "^10",
|
|
"dotenv": "^16.3.1",
|
|
"eslint": "^8",
|
|
"eslint-config-next": "^14.1.0",
|
|
"postcss": "^8",
|
|
"prettier": "^3.0.3",
|
|
"prettier-plugin-organize-imports": "^3.2.3",
|
|
"tailwindcss": "^3",
|
|
"tsconfig-paths": "^4.2.0",
|
|
"typescript": "^5.3.3"
|
|
}
|
|
}
|