Skip to content

Commit 6a737ed

Browse files
chriscrosstalkclaude
authored andcommitted
feat(UI): add Support the Project settings page
Adds a new settings page with Ko-fi donation link, Rogue Support banner, and community contribution options (GitHub, Discord). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent b1edef2 commit 6a737ed

File tree

5 files changed

+117
-0
lines changed

5 files changed

+117
-0
lines changed

admin/app/controllers/settings_controller.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ export default class SettingsController {
3939
return inertia.render('settings/legal');
4040
}
4141

42+
async support({ inertia }: HttpContext) {
43+
return inertia.render('settings/support');
44+
}
45+
4246
async maps({ inertia }: HttpContext) {
4347
const baseAssetsCheck = await this.mapService.ensureBaseAssets();
4448
const regionFiles = await this.mapService.listRegions();

admin/inertia/layouts/SettingsLayout.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
IconDashboard,
55
IconFolder,
66
IconGavel,
7+
IconHeart,
78
IconMapRoute,
89
IconSettings,
910
IconTerminal2,
@@ -41,6 +42,7 @@ export default function SettingsLayout({ children }: { children: React.ReactNode
4142
current: false,
4243
},
4344
{ name: 'System', href: '/settings/system', icon: IconSettings, current: false },
45+
{ name: 'Support the Project', href: '/settings/support', icon: IconHeart, current: false },
4446
{ name: 'Legal Notices', href: '/settings/legal', icon: IconGavel, current: false },
4547
]
4648

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
import { Head } from '@inertiajs/react'
2+
import { IconExternalLink } from '@tabler/icons-react'
3+
import SettingsLayout from '~/layouts/SettingsLayout'
4+
5+
export default function SupportPage() {
6+
return (
7+
<SettingsLayout>
8+
<Head title="Support the Project | Project N.O.M.A.D." />
9+
<div className="xl:pl-72 w-full">
10+
<main className="px-12 py-6 max-w-4xl">
11+
<h1 className="text-4xl font-semibold mb-4">Support the Project</h1>
12+
<p className="text-gray-600 mb-10 text-lg">
13+
Project NOMAD is 100% free and open source — no subscriptions, no paywalls, no catch.
14+
If you'd like to help keep the project going, here are a few ways to show your support.
15+
</p>
16+
17+
{/* Ko-fi */}
18+
<section className="mb-12">
19+
<h2 className="text-2xl font-semibold mb-3">Buy Us a Coffee</h2>
20+
<p className="text-gray-700 mb-4">
21+
Every contribution helps fund development, server costs, and new content packs for NOMAD.
22+
Even a small donation goes a long way.
23+
</p>
24+
<a
25+
href="https://ko-fi.com/crosstalk"
26+
target="_blank"
27+
rel="noopener noreferrer"
28+
className="inline-flex items-center gap-2 px-5 py-2.5 bg-[#FF5E5B] hover:bg-[#e54e4b] text-white font-semibold rounded-lg transition-colors"
29+
>
30+
Support on Ko-fi
31+
<IconExternalLink size={18} />
32+
</a>
33+
</section>
34+
35+
{/* Rogue Support */}
36+
<section className="mb-12">
37+
<h2 className="text-2xl font-semibold mb-3">Need Help With Your Home Network?</h2>
38+
<a
39+
href="https://roguesupport.com"
40+
target="_blank"
41+
rel="noopener noreferrer"
42+
className="block mb-4 rounded-lg overflow-hidden hover:opacity-90 transition-opacity"
43+
>
44+
<img
45+
src="/rogue-support-banner.png"
46+
alt="Rogue Support — Conquer Your Home Network"
47+
className="w-full"
48+
/>
49+
</a>
50+
<p className="text-gray-700 mb-4">
51+
Rogue Support is a networking consultation service for home users.
52+
Think of it as Uber for computer networking — expert help when you need it.
53+
</p>
54+
<a
55+
href="https://roguesupport.com"
56+
target="_blank"
57+
rel="noopener noreferrer"
58+
className="inline-flex items-center gap-2 text-blue-600 hover:underline font-medium"
59+
>
60+
Visit RogueSupport.com
61+
<IconExternalLink size={16} />
62+
</a>
63+
</section>
64+
65+
{/* Other Ways to Help */}
66+
<section className="mb-10">
67+
<h2 className="text-2xl font-semibold mb-3">Other Ways to Help</h2>
68+
<ul className="space-y-2 text-gray-700">
69+
<li>
70+
<a
71+
href="https://github.com/Crosstalk-Solutions/project-nomad"
72+
target="_blank"
73+
rel="noopener noreferrer"
74+
className="text-blue-600 hover:underline"
75+
>
76+
Star the project on GitHub
77+
</a>
78+
{' '}— it helps more people discover NOMAD
79+
</li>
80+
<li>
81+
<a
82+
href="https://github.com/Crosstalk-Solutions/project-nomad/issues"
83+
target="_blank"
84+
rel="noopener noreferrer"
85+
className="text-blue-600 hover:underline"
86+
>
87+
Report bugs and suggest features
88+
</a>
89+
{' '}— every report makes NOMAD better
90+
</li>
91+
<li>Share NOMAD with someone who'd use it — word of mouth is the best marketing</li>
92+
<li>
93+
<a
94+
href="https://discord.com/invite/crosstalksolutions"
95+
target="_blank"
96+
rel="noopener noreferrer"
97+
className="text-blue-600 hover:underline"
98+
>
99+
Join the Discord community
100+
</a>
101+
{' '}— hang out, share your build, help other users
102+
</li>
103+
</ul>
104+
</section>
105+
106+
</main>
107+
</div>
108+
</SettingsLayout>
109+
)
110+
}
251 KB
Loading

admin/start/routes.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ router
5454
router.get('/zim', [SettingsController, 'zim'])
5555
router.get('/zim/remote-explorer', [SettingsController, 'zimRemote'])
5656
router.get('/benchmark', [SettingsController, 'benchmark'])
57+
router.get('/support', [SettingsController, 'support'])
5758
})
5859
.prefix('/settings')
5960

0 commit comments

Comments
 (0)