Move the feed page to the community section and add redirects
Update client-side routing and vercel.json to redirect the /feed endpoint to /community/feed, and integrate the Feed component into the Community page. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 9203795e-937a-4306-b81d-b4d5c78c240e Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: a87bc4c4-2f36-45ef-9537-d97890015ee4 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/7c94b7a0-29c7-4f2e-94ef-44b2153872b7/9203795e-937a-4306-b81d-b4d5c78c240e/duiWnI1 Replit-Helium-Checkpoint-Created: true
This commit is contained in:
commit
dc5ba858bf
6 changed files with 39 additions and 7 deletions
2
.replit
2
.replit
|
|
@ -61,7 +61,7 @@ localPort = 40437
|
|||
externalPort = 3001
|
||||
|
||||
[[ports]]
|
||||
localPort = 43237
|
||||
localPort = 45189
|
||||
externalPort = 3002
|
||||
|
||||
[deployment]
|
||||
|
|
|
|||
|
|
@ -224,7 +224,7 @@ const App = () => (
|
|||
<Route path="/admin/feed" element={<AdminFeed />} />
|
||||
<Route path="/admin/docs-sync" element={<DocsSync />} />
|
||||
<Route path="/arms" element={<Arms />} />
|
||||
<Route path="/feed" element={<Feed />} />
|
||||
<Route path="/feed" element={<Navigate to="/community/feed" replace />} />
|
||||
<Route path="/teams" element={<Teams />} />
|
||||
<Route path="/squads" element={<Squads />} />
|
||||
<Route path="/mentee-hub" element={<MenteeHub />} />
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import Layout from "@/components/Layout";
|
||||
import SEO from "@/components/SEO";
|
||||
import Feed from "@/pages/Feed";
|
||||
|
||||
const API_BASE = import.meta.env.VITE_API_BASE || "";
|
||||
import { Button } from "@/components/ui/button";
|
||||
|
|
@ -1255,6 +1256,7 @@ export default function Community() {
|
|||
|
||||
const communityTabItems = useMemo(
|
||||
() => [
|
||||
{ id: "feed", label: "Feed" },
|
||||
{ id: "new-members", label: "New Members" },
|
||||
{ id: "knowledge", label: "Knowledge Base" },
|
||||
{ id: "mentorship", label: "Mentorship" },
|
||||
|
|
@ -1937,6 +1939,12 @@ export default function Community() {
|
|||
</div>
|
||||
</div>
|
||||
|
||||
{activeTab === "feed" && (
|
||||
<TabsContent value="feed" className="mt-0">
|
||||
<Feed embedded />
|
||||
</TabsContent>
|
||||
)}
|
||||
|
||||
{activeTab === "new-members" && (
|
||||
<TabsContent value="new-members" className="mt-0">
|
||||
{/* New Member Hub */}
|
||||
|
|
|
|||
|
|
@ -124,7 +124,11 @@ function parseContent(content: string): {
|
|||
}
|
||||
}
|
||||
|
||||
export default function Feed() {
|
||||
interface FeedProps {
|
||||
embedded?: boolean;
|
||||
}
|
||||
|
||||
export default function Feed({ embedded = false }: FeedProps) {
|
||||
const { user, loading } = useAuth();
|
||||
const { toast } = useToast();
|
||||
const composerRef = useRef<HTMLDivElement | null>(null);
|
||||
|
|
@ -486,9 +490,11 @@ export default function Feed() {
|
|||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<Layout>
|
||||
<div className="min-h-screen bg-[radial-gradient(circle_at_top,_rgba(110,141,255,0.12),transparent_60%)]">
|
||||
const content = (
|
||||
<div className={cn(
|
||||
"bg-[radial-gradient(circle_at_top,_rgba(110,141,255,0.12),transparent_60%)]",
|
||||
!embedded && "min-h-screen"
|
||||
)}>
|
||||
<div className="mx-auto flex w-full max-w-6xl flex-col gap-4 sm:gap-6 lg:gap-8 px-3 sm:px-4 pb-16 pt-6 sm:pt-10 lg:px-6">
|
||||
<section className="relative overflow-hidden rounded-2xl sm:rounded-3xl border border-border/40 bg-background/80 p-4 sm:p-6 lg:p-8 shadow-2xl backdrop-blur">
|
||||
<div className="absolute inset-0 bg-[radial-gradient(circle_at_top_left,_rgba(96,189,255,0.18),transparent_60%)]" />
|
||||
|
|
@ -942,6 +948,11 @@ export default function Feed() {
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Layout>
|
||||
);
|
||||
|
||||
if (embedded) {
|
||||
return content;
|
||||
}
|
||||
|
||||
return <Layout>{content}</Layout>;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -143,6 +143,14 @@ https://supabase.aethex.tech/auth/v1/callback
|
|||
- `https://supabase.aethex.tech/auth/v1/callback`
|
||||
|
||||
## Recent Changes (December 3, 2025)
|
||||
- ✅ **Discord-to-Feed Integration**: Messages from Discord FEED channel sync to AeThex community feed
|
||||
- Bot listens to configured channel (DISCORD_MAIN_CHAT_CHANNELS env var)
|
||||
- Posts display with purple Discord badge and channel name
|
||||
- Supports images/videos from Discord messages
|
||||
- Real-time updates via Supabase subscriptions
|
||||
- ✅ **Moved /feed to /community/feed**: Feed is now a tab within the Community page
|
||||
- Old /feed URL redirects to /community/feed
|
||||
- Added redirect in vercel.json for production
|
||||
- ✅ Fixed passport subdomain API to call aethex.foundation (identity authority)
|
||||
- ✅ Fixed API paths: `subdomain-data` → `subdomain`, `project-data` → `project`
|
||||
- ✅ Restored wildcard rewrites in vercel.json for `*.aethex.me` and `*.aethex.space`
|
||||
|
|
|
|||
|
|
@ -50,6 +50,11 @@
|
|||
"has": [{ "type": "host", "value": "aethex.space" }],
|
||||
"destination": "https://aethex.dev/",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feed",
|
||||
"destination": "/community/feed",
|
||||
"permanent": true
|
||||
}
|
||||
],
|
||||
"rewrites": [
|
||||
|
|
|
|||
Loading…
Reference in a new issue