Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
e1fa535
Add Top Art Picks section and pages to /resources
peteromallet Feb 14, 2026
cf20b58
Redesign resources page with magazine-style layout
peteromallet Feb 14, 2026
a60270f
Fix build errors: add hls.js dep, fix missing module and type issues
xliry Feb 14, 2026
4bcc940
Apply theme 1 editorial magazine layout to Resources page
xliry Feb 14, 2026
56a1acf
Add vercel.json for SPA client-side routing
xliry Feb 14, 2026
7ec320a
Replace mock Art Gallery with live Discord data sections
xliry Feb 14, 2026
1a2b31f
Fix art showcase video rendering and truncate resources feed
xliry Feb 14, 2026
4fb7cf0
Reduce initial art showcase to 8 items with load more
xliry Feb 14, 2026
6ce19d5
Fix Resources page mobile responsiveness and clean up dead code
xliry Feb 14, 2026
98b3f05
Limit Community Resources initial load to 8 items
xliry Feb 14, 2026
6fa551e
Add parallax scrolling effect to hero magazine cover
xliry Feb 14, 2026
7dbd696
Add bndc image sequence for parallax scroll gallery
xliry Feb 14, 2026
1bdf280
Add scroll-driven 155-frame image sequence to hero magazine cover
xliry Feb 14, 2026
fee7e4e
Speed up image sequence to 2x and clamp frame index
xliry Feb 14, 2026
742ec67
Revert image sequence to full scroll range [0,1]
xliry Feb 14, 2026
48516dd
Replace bndc image sequence with assorted_propaganda and add working …
xliry Feb 14, 2026
4f5bc10
Randomize initial cover image on each page load
xliry Feb 14, 2026
894d1a3
Add art gallery, community resources, user profiles, Discord auth, an…
xliry Feb 17, 2026
cea03a7
Refactor: use existing media/assets tables instead of art_pieces/comm…
xliry Feb 17, 2026
2268135
Merge pull request #1 from xliry/feat/art-resources-profiles-auth
xliry Feb 17, 2026
02d2537
Fix grid orphans, header overlap, resource navigation, and add Discor…
xliry Feb 17, 2026
e056206
Add YouTube-style layout with creator sidebar to resource detail page
xliry Feb 17, 2026
938cf40
Revert "Add YouTube-style layout with creator sidebar to resource det…
xliry Feb 17, 2026
3c867c7
Add YouTube-style layout with creator sidebar to art detail page
xliry Feb 17, 2026
4af4106
Fix sidebar showing unrelated art when creator has no userId
xliry Feb 17, 2026
1fe1da7
Fix sidebar fetching all art before artPiece loads
xliry Feb 17, 2026
28f493a
Refine resources UX and migrate profile/detail routing to slugs
peteromallet Feb 18, 2026
adf9301
Merge upstream/main - resolve conflicts with homepage refinements
xliry Feb 19, 2026
89ac1fc
Implement homepage/resources refinements and quality cleanup
peteromallet Feb 19, 2026
e7ddc3e
Fix PR build: tighten Timeline tooltip types and Header context import
peteromallet Feb 19, 2026
7a04585
Merge POM's resources UX refinements and build fixes
xliry Feb 19, 2026
d5edc7c
Merge upstream/main into art-resources and resolve conflicts
xliry Apr 3, 2026
0c906a3
Refactor data layer to members table and build media showcase
xliry Apr 3, 2026
bc9c5ad
Merge upstream/main into main - resolve conflicts using art-resources…
xliry Apr 3, 2026
5596c10
Merge art-resources: data layer migration to members table and media …
xliry Apr 3, 2026
0e64ba7
Add hls.js dependency for CinematicVideoPlayer
xliry Apr 3, 2026
37a9bf4
Add Creators section, Competitions page, and See All CTAs
xliry Apr 3, 2026
66dacc5
Complete remaining acceptance criteria from task spec
xliry Apr 3, 2026
6a5679f
Refactor competition content integration
xliry Apr 4, 2026
726ef53
Fix invalid art link error for static competition items
xliry Apr 4, 2026
4a7fd20
Load Arca Gidan entries from DB instead of static array
xliry Apr 4, 2026
00fecc9
Limit initial Arca Gidan entries to 8 in art gallery
xliry Apr 4, 2026
1b38aa4
Fix resource connections for competition assets
xliry Apr 4, 2026
42d1954
Paginate Arca Gidan entries alongside community art on load more
xliry Apr 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
544 changes: 544 additions & 0 deletions .desloppify/query.json

Large diffs are not rendered by default.

3,125 changes: 3,125 additions & 0 deletions .desloppify/state.json

Large diffs are not rendered by default.

3,124 changes: 3,124 additions & 0 deletions .desloppify/state.json.bak

Large diffs are not rendered by default.

Binary file added Screenshot_2026-04-04_at_00.52.04.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
7 changes: 7 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"framer-motion": "^12.23.24",
"hls.js": "^1.6.15",
"lucide-react": "^0.554.0",
"react": "^19.2.0",
"react-dom": "^19.2.0",
Expand Down
Binary file added public/assorted_propaganda/1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/10.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/11.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/12.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/13.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/14.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/15.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/16.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/17.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/18.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/19.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/20.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/21.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/22.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/23.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/24.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/25.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/3.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/4.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/5.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/6.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/7.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/8.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assorted_propaganda/9.jpg
Binary file added scorecard.png
56 changes: 35 additions & 21 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,41 +1,55 @@
import { lazy, Suspense } from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import { AuthProvider } from '@/contexts/AuthContext';
import { MainLayout } from '@/layouts/MainLayout';
import { Skeleton } from '@/components/ui/Skeleton';
import Home from '@/pages/Home';

// Lazy load non-critical pages
const OwnershipPage = lazy(() => import('@/pages/OwnershipPage'));
const SecondRenaissance = lazy(() => import('@/pages/SecondRenaissance'));
const WrappedPage = lazy(() => import('@/pages/Wrapped'));
const Resources = lazy(() => import('@/pages/Resources'));
const ArtDetail = lazy(() => import('@/pages/ArtDetail'));
const ResourceDetail = lazy(() => import('@/pages/ResourceDetail'));
const UserProfile = lazy(() => import('@/pages/UserProfile'));
const AuthCallback = lazy(() => import('@/pages/AuthCallback'));
const SubmitArt = lazy(() => import('@/pages/SubmitArt'));
const SubmitResource = lazy(() => import('@/pages/SubmitResource'));
const NotFound = lazy(() => import('@/pages/NotFound'));

// Loading fallback with skeleton
// Minimal loading fallback — keeps layout stable while lazy chunks load.
// Intentionally blank so page-specific skeletons (e.g. ResourceGrid) aren't preceded by a flash.
const PageLoader = () => (
<div className="min-h-[60vh] flex items-center justify-center">
<div className="w-full max-w-md space-y-4 px-6">
<Skeleton className="h-8 w-3/4 mx-auto" />
<Skeleton className="h-4 w-full" />
<Skeleton className="h-4 w-5/6" />
<Skeleton className="h-4 w-4/6" />
</div>
</div>
<div className="min-h-[60vh]" />
);

function App() {
return (
<Router>
<MainLayout>
<Suspense fallback={<PageLoader />}>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/ownership" element={<OwnershipPage />} />
<Route path="/2nd-renaissance" element={<SecondRenaissance />} />
<Route path="/1m" element={<WrappedPage />} />
<Route path="*" element={<NotFound />} />
</Routes>
</Suspense>
</MainLayout>
<AuthProvider>
<MainLayout>
<Suspense fallback={<PageLoader />}>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/ownership" element={<OwnershipPage />} />
<Route path="/2nd-renaissance" element={<SecondRenaissance />} />
<Route path="/1m" element={<WrappedPage />} />
<Route path="/resources" element={<Resources />} />
<Route path="/auth/callback" element={<AuthCallback />} />
<Route path="/art/:slug" element={<ArtDetail />} />
<Route path="/resources/:slug" element={<ResourceDetail />} />
<Route path="/:username/art/:slug" element={<ArtDetail />} />
<Route path="/:username/resources/:slug" element={<ResourceDetail />} />
<Route path="/:username/art" element={<UserProfile />} />
<Route path="/:username/resources" element={<UserProfile />} />
<Route path="/:username" element={<UserProfile />} />
<Route path="/submit/art" element={<SubmitArt />} />
<Route path="/submit/resource" element={<SubmitResource />} />
<Route path="*" element={<NotFound />} />
</Routes>
</Suspense>
</MainLayout>
</AuthProvider>
</Router>
);
}
Expand Down
Loading