Skip to content

Commit b5043af

Browse files
authored
Merge pull request #67 from joaoc-dev/feature/33-group-system
Feature/33 group system
2 parents 7d94d93 + b1d772a commit b5043af

173 files changed

Lines changed: 10174 additions & 864 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 285 additions & 58 deletions
Large diffs are not rendered by default.

blueledger-webapp/.env.example

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
NEXT_PUBLIC_SITE_URL="https://blueledger.development.joao-carvalho.com/"
2+
MONGODB_SEED_URI="mongodb://localhost:27030/blueledger_seed"
23
MONGODB_URI="mongodb://localhost:27030/blueledger"
3-
44
SENTRY_AUTH_TOKEN=
55
SENTRY_ORG=
66
SENTRY_PROJECT=

blueledger-webapp/app/(protected)/dashboard/page.tsx

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
1-
'use client';
2-
1+
import type { Metadata } from 'next';
32
import CategoryShareChart from '@/features/dashboard/charts/category-share-chart';
43
import CumulativeSpendYTD from '@/features/dashboard/charts/cumulative-spend-ytd-chart';
54
import DayOfWeekChart from '@/features/dashboard/charts/day-of-week-chart';
6-
import GroupSpendingChart from '@/features/dashboard/charts/group-spending-chart';
75
import HourOfDayChart from '@/features/dashboard/charts/hour-of-day-chart';
86
import SeasonalSpendingChart from '@/features/dashboard/charts/seasonal-spending-chart';
9-
import ToReceiveVsToPayChart from '@/features/dashboard/charts/to-receive-vs-to-pay-chart';
10-
import TopCounterpartiesChart from '@/features/dashboard/charts/top-counterparties-chart';
7+
import { pageSeoConfigs } from '@/lib/seo';
8+
9+
export const metadata: Metadata = {
10+
title: pageSeoConfigs.dashboard.title,
11+
description: pageSeoConfigs.dashboard.description,
12+
robots: {
13+
index: false, // Dashboard should not be indexed
14+
follow: false,
15+
},
16+
};
1117

1218
function DashboardPage() {
1319
return (
@@ -16,9 +22,6 @@ function DashboardPage() {
1622
<DayOfWeekChart />
1723
<HourOfDayChart />
1824
<CategoryShareChart />
19-
<ToReceiveVsToPayChart />
20-
<TopCounterpartiesChart />
21-
<GroupSpendingChart />
2225
<SeasonalSpendingChart />
2326
</div>
2427
);

blueledger-webapp/app/(protected)/expenses/(list)/page.tsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
1+
import type { Metadata } from 'next';
12
import { ExpensesTable } from '@/features/expenses/components';
3+
import { pageSeoConfigs } from '@/lib/seo';
4+
5+
export const metadata: Metadata = {
6+
title: pageSeoConfigs.expenses.title,
7+
description: pageSeoConfigs.expenses.description,
8+
robots: {
9+
index: false, // Protected pages should not be indexed
10+
follow: false,
11+
},
12+
};
213

314
async function ExpensesPage() {
415
return (

blueledger-webapp/app/(protected)/friends/page.tsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
1+
import type { Metadata } from 'next';
12
import { FriendshipsTable } from '@/features/friendship/components';
3+
import { pageSeoConfigs } from '@/lib/seo';
4+
5+
export const metadata: Metadata = {
6+
title: pageSeoConfigs.friends.title,
7+
description: pageSeoConfigs.friends.description,
8+
robots: {
9+
index: false, // Protected pages should not be indexed
10+
follow: false,
11+
},
12+
};
213

314
async function FriendsPage() {
415
return (
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { GroupsTableSkeleton } from '@/features/groups/components';
2+
3+
function LoadingGroupsPage() {
4+
return <GroupsTableSkeleton />;
5+
}
6+
7+
export default LoadingGroupsPage;
Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,22 @@
1-
function GroupsPage() {
2-
return <div className="text-center">Groups</div>;
1+
import type { Metadata } from 'next';
2+
import { GroupsTable } from '@/features/groups/components';
3+
import { pageSeoConfigs } from '@/lib/seo';
4+
5+
export const metadata: Metadata = {
6+
title: pageSeoConfigs.groups.title,
7+
description: pageSeoConfigs.groups.description,
8+
robots: {
9+
index: false, // Protected pages should not be indexed
10+
follow: false,
11+
},
12+
};
13+
14+
async function GroupsPage() {
15+
return (
16+
<div>
17+
<GroupsTable />
18+
</div>
19+
);
320
}
421

522
export default GroupsPage;

blueledger-webapp/app/(protected)/user/notifications/loading.tsx

Lines changed: 0 additions & 7 deletions
This file was deleted.

blueledger-webapp/app/(protected)/user/notifications/page.tsx

Lines changed: 0 additions & 12 deletions
This file was deleted.

blueledger-webapp/app/(public)/page.tsx

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import type { Metadata } from 'next';
2+
import { pageSeoConfigs } from '@/lib/seo';
13
import { LandingNav } from './landing-nav';
24
import { Faq } from './sections/faq/faq';
35
import { Features } from './sections/features/features';
@@ -6,6 +8,42 @@ import { Hero } from './sections/hero';
68
import { Pricing } from './sections/pricing/pricing';
79
import { Testimonials } from './sections/testimonials/testimonials';
810

11+
export const metadata: Metadata = {
12+
title: pageSeoConfigs.home.title,
13+
description: pageSeoConfigs.home.description,
14+
keywords: [
15+
'expense tracking app',
16+
'bill splitting app',
17+
'group expenses',
18+
'financial management',
19+
'budget app',
20+
'receipt scanner',
21+
'money management app',
22+
'shared expenses',
23+
'expense sharing',
24+
'split bills',
25+
],
26+
openGraph: {
27+
title: pageSeoConfigs.home.title,
28+
description: pageSeoConfigs.home.description,
29+
type: 'website',
30+
images: [
31+
{
32+
url: '/app_screenshot.png',
33+
width: 1200,
34+
height: 630,
35+
alt: 'Blue Ledger - Smart Expense Management',
36+
},
37+
],
38+
},
39+
twitter: {
40+
card: 'summary_large_image',
41+
title: pageSeoConfigs.home.title,
42+
description: pageSeoConfigs.home.description,
43+
images: ['/app_screenshot.png'],
44+
},
45+
};
46+
947
export default function Home() {
1048
return (
1149
<div className="dark bg-background text-foreground min-h-screen">

0 commit comments

Comments
 (0)