Skip to content

Commit 0bd5eb7

Browse files
committed
Replace home page with forum-centric layout
1 parent d287722 commit 0bd5eb7

1 file changed

Lines changed: 90 additions & 85 deletions

File tree

src/pages/Home.jsx

Lines changed: 90 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,9 @@ import SectionHeading from '../components/SectionHeading';
44
import GlassCard from '../components/GlassCard';
55

66
const heroStats = [
7-
{ value: '32k+', label: 'Threads answered' },
8-
{ value: '5.1k', label: 'Active helpers' },
9-
{ value: '24/6', label: 'Live dispatch' },
10-
];
11-
12-
const dispatchFeed = [
13-
{
14-
tag: 'Phones',
15-
title: 'Qin F21 shipped with patched launcher',
16-
note: 'Use MDN Installer v3.2 to keep Hebrew keyboard.',
17-
time: '18:42',
18-
},
19-
{
20-
tag: 'Filtering',
21-
title: 'eGate beta enables multi-profile',
22-
note: 'Toggle the Layers flag for patrons before rollout.',
23-
time: '15:20',
24-
},
25-
{
26-
tag: 'Deployment',
27-
title: 'Yeshiva lockdown template updated',
28-
note: 'New VLAN map + Wi-Fi reminders poster.',
29-
time: '09:05',
30-
},
7+
{ value: '305+', label: 'Signups last month' },
8+
{ value: '100k+', label: 'Page visits' },
9+
{ value: '15k+', label: 'Posts last month' },
3110
];
3211

3312
const resourceCards = [
@@ -47,26 +26,31 @@ const resourceCards = [
4726
},
4827
];
4928

50-
const previewPosts = [
29+
const guidePreview = [
5130
{
52-
title: 'Beginner’s guide to getting started',
31+
title: "Beginner's Guide to Getting Started",
5332
tag: 'Guide',
54-
blurb: 'A friendly checklist that walks brand-new members through phones, filters, and terminology.',
33+
blurb: 'A friendly checklist for brand-new members learning phones, filters, and terminology.',
5534
},
5635
{
57-
title: 'What is ADB and how do I use it?',
36+
title: 'What is ADB and Getting Started',
5837
tag: 'Android guide',
59-
blurb: 'Explains how to control a phone from a computer so you can tweak launches without touching the device.',
38+
blurb: 'Explains how to send commands from your computer so you can tweak a phone without touching it.',
6039
},
6140
{
6241
title: 'What is the eGate filter?',
6342
tag: 'eGate',
64-
blurb: 'Breaks down how the MDM works, why it’s hard to bypass, and how resellers stay compliant.',
43+
blurb: 'Covers how the Android MDM works, why it is hard to remove, and how admins stay compliant.',
6544
},
6645
{
67-
title: 'Beginner questions megathread',
46+
title: 'Beginner Questions',
6847
tag: 'Community',
69-
blurb: 'No judgment zone for parents, mechanchim, and MSPs who need fast help.',
48+
blurb: 'A no-judgment megathread for parents, mechanchim, and MSPs who need fast help.',
49+
},
50+
{
51+
title: 'How to Make Any App Work Without Google Play Services',
52+
tag: 'Android guide',
53+
blurb: 'Workarounds for apps that normally refuse to launch without Play Services installed.',
7054
},
7155
];
7256

@@ -93,44 +77,44 @@ const adminProfiles = [
9377

9478
const statsSnapshot = [
9579
{ label: 'Signups last month', value: '305+' },
96-
{ label: 'Page visits', value: '100k+' },
80+
{ label: 'Page visits last month', value: '100k+' },
9781
{ label: 'Posts last month', value: '15k+' },
98-
{ label: 'User visits', value: '1.6k+' },
82+
{ label: 'User visits last month', value: '1.6k+' },
9983
];
10084

10185
const testimonials = [
10286
{
10387
quote:
104-
'I was stuck configuring a flip phone. A forum volunteer and the published guide walked me through every command. Problem solved before lunch.”',
88+
'I was completely stuck trying to get my new flip phone working. A forum member walked me through every step. Could not have done it without this community.',
10589
author: '@Simple_Yid · Forum member',
10690
},
10791
{
10892
quote:
109-
'JTech MDM Installer saved us thousands. We can flash filters in-house without chasing paid installers.',
93+
'JTech MDM Installer was a lifesaver. We install filters in-house without chasing paid installers.',
11094
author: '@Chevra_Man · Forum member',
11195
},
11296
{
11397
quote:
114-
'When Apps4Flip closed we needed a replacement fast. JTech became the trustworthy source for kosher tech.',
98+
'When Apps4Flip went offline we needed a new home. JTech became the trusted resource for kosher tech.',
11599
author: '@kosherboy · Moderator',
116100
},
117101
];
118102

119103
const faqs = [
120104
{
121-
question: 'Is JTech only for techies?',
105+
question: 'What is JTech Forums?',
122106
answer:
123-
'It’s a moderated space for the Orthodox community to discuss kosher technology, share guides, and request help without noise.',
107+
'A moderated community for kosher technology: phones, filters, firmware, policy templates, and support from mechanchim and IT leads.',
124108
},
125109
{
126-
question: 'What type of information can I find?',
110+
question: 'What type of information can be found?',
127111
answer:
128-
'Guides, firmware, scripts, app recommendations, policy templates, and daily status updates from real deployments.',
112+
'Guides, hashkafic guardrails, troubleshooting posts, vetted downloads, and daily intel from real deployments.',
129113
},
130114
{
131-
question: 'How do I contact moderators?',
115+
question: 'How can I contact moderators?',
132116
answer:
133-
'Sign in to the forum, open the Users tab, and direct-message any listed moderator or admin. You can also use the contact form.',
117+
'Sign into the forum, open the Users tab, and DM any moderator or admin. You can also reach out via the contact page.',
134118
},
135119
];
136120

@@ -187,10 +171,15 @@ export default function Home() {
187171
<img src="/img/phonegrid.png" alt="" className="pointer-events-none absolute inset-0 -z-10 h-full w-full object-cover opacity-20" />
188172
<div className="mx-auto flex max-w-6xl flex-col gap-12 lg:flex-row lg:items-center">
189173
<div className="space-y-8 text-center lg:text-left">
190-
<p className="section-label text-xs uppercase text-sky-300">Community resources</p>
191-
<h1 className="text-4xl font-semibold leading-tight text-white sm:text-6xl">The leading Jewish filtering & tech forum.</h1>
174+
<div className="inline-flex items-center justify-center rounded-full border border-white/20 px-4 py-1 text-xs uppercase tracking-[0.3em] text-slate-300">
175+
Check out our forum for answers, information, and guides!
176+
<a href="https://forums.jtechforums.org" className="ml-2 font-semibold text-sky-300">
177+
Go now →
178+
</a>
179+
</div>
180+
<h1 className="text-4xl font-semibold leading-tight text-white sm:text-6xl">The Leading Jewish Filtering & Tech Forum</h1>
192181
<p className="text-lg text-slate-300">
193-
JTech empowers the community with precise, current filtering intel—phones, firmware, eGate scripts, hashkafic guardrails, and support lines.
182+
JTech's mission is to empower the Jewish community with the most precise, accurate, and up-to-date tech and filtering information.
194183
</p>
195184
<div className="flex flex-wrap justify-center gap-4 lg:justify-start">
196185
<a
@@ -199,13 +188,13 @@ export default function Home() {
199188
rel="noopener"
200189
className="inline-flex items-center justify-center rounded-full bg-sky-500 px-6 py-3 text-base font-semibold text-slate-950 transition hover:bg-sky-400"
201190
>
202-
Jump into the forum
191+
Join the forum
203192
</a>
204193
<a
205194
href="/guides"
206195
className="inline-flex items-center justify-center rounded-full border border-white/20 px-6 py-3 text-base font-semibold text-white transition hover:border-white/60"
207196
>
208-
Browse guides
197+
View guides
209198
</a>
210199
</div>
211200
<div className="mt-6 grid gap-6 sm:grid-cols-3">
@@ -220,20 +209,19 @@ export default function Home() {
220209
<div className="glass-panel w-full max-w-md rounded-3xl border border-white/10 p-6 text-sm text-white shadow-2xl">
221210
<div className="flex items-center gap-3 text-xs uppercase tracking-[0.3em] text-slate-300">
222211
<span className="rounded-full bg-emerald-400/20 px-3 py-1 font-semibold text-emerald-200">Live radar</span>
223-
<span>Deploy status • Q4</span>
212+
<span>Deploy status</span>
224213
</div>
225-
<div className="mt-6 space-y-4">
226-
{dispatchFeed.map(({ tag, title, note, time }) => (
227-
<div key={title} className="rounded-2xl border border-white/5 bg-slate-900/70 p-4">
228-
<div className="flex items-center justify-between text-[11px] uppercase tracking-[0.3em] text-slate-400">
229-
<span>{tag}</span>
230-
<span>{time}</span>
231-
</div>
232-
<p className="mt-2 text-base font-semibold text-white">{title}</p>
233-
<p className="text-xs text-slate-300">{note}</p>
234-
</div>
214+
<ul className="mt-6 space-y-4">
215+
{[
216+
'Pixel 8a eGate stack shipped with 0 escalations',
217+
'Battery saver profile published for Qin F21',
218+
'Kosher Launcher nav fix live for patrons',
219+
].map((item) => (
220+
<li key={item} className="rounded-2xl border border-white/5 bg-slate-900/70 p-4 text-sm text-slate-200">
221+
{item}
222+
</li>
235223
))}
236-
</div>
224+
</ul>
237225
<img src="/img/home/android.png" alt="Live build" className="mt-6 h-60 w-full rounded-2xl object-cover" />
238226
</div>
239227
</div>
@@ -251,20 +239,37 @@ export default function Home() {
251239
</div>
252240
</section>
253241

242+
<section className="mx-auto max-w-5xl px-6">
243+
<div className="glass-panel flex flex-col items-center gap-6 rounded-4xl border border-white/10 bg-gradient-to-r from-sky-500/20 to-indigo-500/20 px-8 py-12 text-center">
244+
<p className="section-label text-xs uppercase text-sky-200">Join our community forum today</p>
245+
<p className="text-base text-slate-200">
246+
Ask questions, find answers, explore guides, and access valuable information—all while helping others in the community.
247+
</p>
248+
<a
249+
href="https://forums.jtechforums.org"
250+
target="_blank"
251+
rel="noopener"
252+
className="inline-flex items-center justify-center rounded-full bg-white px-6 py-3 text-base font-semibold text-slate-900 transition hover:bg-slate-100"
253+
>
254+
Join now
255+
</a>
256+
</div>
257+
</section>
258+
254259
<section className="mx-auto max-w-6xl px-6">
255-
<SectionHeading label="Forum preview" title="Guides people are reading right now" />
260+
<SectionHeading label="Guides" title="Hand-picked forum threads" />
256261
<div className="mt-10 grid gap-6 md:grid-cols-2">
257-
{previewPosts.map((post) => (
262+
{guidePreview.map((post) => (
258263
<GlassCard key={post.title} eyebrow={post.tag} title={post.title} description={post.blurb} />
259264
))}
260265
</div>
261266
</section>
262267

263268
<section className="mx-auto max-w-6xl px-6">
264-
<SectionHeading label="Moderation team" title="Meet our admins" />
269+
<SectionHeading label="Meet our admins" title="Humans behind the forum" />
265270
<div className="mt-10 grid gap-6 md:grid-cols-3">
266271
{adminProfiles.map((admin) => (
267-
<div key={admin.name} className="rounded-3xl border border-white/10 bg-white/5 p-5 text-center">
272+
<div key={admin.handle} className="rounded-3xl border border-white/10 bg-white/5 p-5 text-center">
268273
<img src={admin.avatar} alt={admin.name} className="mx-auto h-16 w-16 rounded-full object-cover" />
269274
<p className="mt-4 text-lg font-semibold text-white">{admin.name}</p>
270275
<p className="text-sm text-sky-300">{admin.handle}</p>
@@ -275,26 +280,7 @@ export default function Home() {
275280
</section>
276281

277282
<section className="mx-auto max-w-6xl px-6">
278-
<SectionHeading label="Leaderboard" title="Helpers keeping the forum running" />
279-
<div className="mt-6 rounded-3xl border border-white/10 bg-slate-950/70 p-6">
280-
{leaderLoading ? (
281-
<p className="text-sm text-slate-300">Fetching latest leaderboard…</p>
282-
) : (
283-
<div className="grid gap-4 md:grid-cols-3">
284-
{leaders.map((leader) => (
285-
<div key={leader.username} className="rounded-2xl border border-white/10 bg-white/5 p-4 text-center">
286-
<img src={leader.avatar} alt={leader.username} className="mx-auto h-14 w-14 rounded-full object-cover" />
287-
<p className="mt-3 text-base font-semibold text-white">{leader.username}</p>
288-
<p className="text-sm text-slate-300">{leader.points} pts</p>
289-
</div>
290-
))}
291-
</div>
292-
)}
293-
</div>
294-
</section>
295-
296-
<section className="mx-auto max-w-6xl px-6">
297-
<SectionHeading label="Quick search" title="Find what you need instantly" />
283+
<SectionHeading label="Quick search" title="Looking for something specific?" />
298284
<form
299285
action={import.meta.env.VITE_FORUM_SEARCH_URL || 'https://forums.jtechforums.org/search'}
300286
method="get"
@@ -314,14 +300,33 @@ export default function Home() {
314300
</section>
315301

316302
<section className="mx-auto max-w-6xl px-6">
317-
<SectionHeading label="Stats" title="Forum health at a glance" />
303+
<SectionHeading label="Stats" title="Our forum snapshot" />
318304
<div className="mt-8 grid gap-6 sm:grid-cols-2 lg:grid-cols-4">
319305
{statsSnapshot.map((stat) => (
320306
<GlassCard key={stat.label} title={stat.value} description={stat.label} />
321307
))}
322308
</div>
323309
</section>
324310

311+
<section className="mx-auto max-w-6xl px-6">
312+
<SectionHeading label="Leaderboard" title="Helpers keeping things running" />
313+
<div className="mt-6 rounded-3xl border border-white/10 bg-slate-950/70 p-6">
314+
{leaderLoading ? (
315+
<p className="text-sm text-slate-300">Fetching latest leaderboard…</p>
316+
) : (
317+
<div className="grid gap-4 md:grid-cols-3">
318+
{leaders.map((leader) => (
319+
<div key={leader.username} className="rounded-2xl border border-white/10 bg-white/5 p-4 text-center">
320+
<img src={leader.avatar} alt={leader.username} className="mx-auto h-14 w-14 rounded-full object-cover" />
321+
<p className="mt-3 text-base font-semibold text-white">{leader.username}</p>
322+
<p className="text-sm text-slate-300">{leader.points} pts</p>
323+
</div>
324+
))}
325+
</div>
326+
)}
327+
</div>
328+
</section>
329+
325330
<section className="mx-auto max-w-6xl px-6">
326331
<SectionHeading label="Testimonials" title="What our members are saying" />
327332
<div className="mt-10 grid gap-6 md:grid-cols-3">

0 commit comments

Comments
 (0)