A forum web application that allows users to create, delete, and like or dislike posts. Users can also update their profile information, including their username and bio. The platform supports content moderation through an admin dashboard.
The frontend is built with Next.js following Bulletproof Architecture, leveraging server-side rendering for fast initial page loads, TanStack for client-side caching, and Zustand for centralized state management.
Backend is built with Go using Clean Architecture and implements a RESTful API with Fiber v2. PostgreSQL is used for data persistence via GORM, Redis handles rate limiting, and images are stored using Supabase.
- Frontend: Next.js, ShadCN, Tailwind CSS, Zod, TanStack, Zustand
- Backend: Go, Fiber, GORM, PostgreSQL, Redis
- Service: AWS, Supabase
- Node.js (v18 or later)
- npm
Run this to clone project:
git clone https://github.com/mxilia/Quonet-frontend.gitAfter that make sure your current directory is at the root of this project.
cd Quonet-frontendRun this to download dependencies:
npm installHere is the variable list example:
DEV=true
NEXT_PUBLIC_API_URL=http://localhost:8000/api/v2
NEXT_PUBLIC_APP_URL=http://localhost:3000Write your own values for corresponding variables.
To run this project, execute:
npm run devAnd there you go, the frontend is up and running.
.
βββ .vscode/
β βββ settings.json
βββ assets/
β βββ quonet_page.png
βββ public/
β βββ blue-chat.png
β βββ comment-icon.png
β βββ default-avatar.png
β βββ favicon.ico
β βββ feeds-icon.png
β βββ google-logo.png
β βββ home-icon.png
β βββ logo.svg
β βββ settings-icon.png
βββ src/
β βββ app/
β β βββ layout.tsx
β β βββ not-found.tsx
β β βββ provider.tsx
β β βββ (group)/
β β β βββ layout.tsx
β β β βββ loading.tsx
β β β βββ page.tsx
β β β βββ admin/
β β β β βββ dashboard/
β β β β βββ page.tsx
β β β βββ feed/
β β β β βββ loading.tsx
β β β β βββ page.tsx
β β β βββ posts/
β β β β βββ [id]/
β β β β βββ loading.tsx
β β β β βββ page.tsx
β β β βββ settings/
β β β β βββ page.tsx
β β β βββ threads/
β β β β βββ [id]/
β β β β βββ loading.tsx
β β β β βββ page.tsx
β β β βββ users/
β β β β βββ [id]/
β β β β βββ loading.tsx
β β β β βββ page.tsx
β β β βββ _components/
β β β βββ create-post-tab.tsx
β β β βββ navbar-layout.tsx
β β β βββ skeletons/
β β β βββ create-post-tab-skeleton.tsx
β β βββ login/
β β βββ layout.tsx
β β βββ page.tsx
β β βββ _components/
β β βββ redirect-button.tsx
β βββ assets/
β βββ components/
β β βββ errors/
β β β βββ main.tsx
β β βββ layouts/
β β βββ ui/
β β βββ background/
β β β βββ blur-background.tsx
β β βββ dropdown/
β β β βββ dropdown-menu.tsx
β β βββ form/
β β β βββ error.tsx
β β β βββ field-wrapper.tsx
β β β βββ form.tsx
β β β βββ input.tsx
β β β βββ label.tsx
β β β βββ select.tsx
β β β βββ textarea.tsx
β β βββ image-frame/
β β β βββ image-frame.tsx
β β βββ notification/
β β β βββ notification.store.ts
β β β βββ notification.tsx
β β βββ skeleton/
β β βββ skeleton.tsx
β βββ config/
β β βββ env.ts
β β βββ path.ts
β βββ features/
β β βββ announcements/
β β β βββ api/
β β β β βββ create-announcement.ts
β β β β βββ delete-announcement.ts
β β β β βββ get-announcements.ts
β β β βββ components/
β β β βββ announcement-box.tsx
β β β βββ announcements-list.tsx
β β β βββ create-announcement.tsx
β β β βββ skeletons/
β β β βββ announcement-box-skeleton.tsx
β β β βββ announcements-list-skeleton.tsx
β β βββ comments/
β β β βββ api/
β β β β βββ create-comment.ts
β β β β βββ delete-comment.ts
β β β β βββ get-comment.ts
β β β β βββ get-comments.ts
β β β β βββ update-comment.ts
β β β βββ components/
β β β βββ comments-list.tsx
β β β βββ comments.tsx
β β β βββ create-comment.tsx
β β β βββ delete-comment.tsx
β β β βββ update-comment.tsx
β β βββ likes/
β β β βββ api/
β β β β βββ create-like.ts
β β β β βββ delete-like.ts
β β β β βββ get-like.ts
β β β β βββ get-like-count.ts
β β β β βββ get-like-state.ts
β β β β βββ get-likes.ts
β β β βββ components/
β β β βββ like-button.tsx
β β β βββ like-counter.tsx
β β β βββ like-modify.tsx
β β β βββ likes-list.tsx
β β β βββ likes.tsx
β β βββ posts/
β β β βββ api/
β β β β βββ create-post.ts
β β β β βββ delete-post.ts
β β β β βββ get-post.ts
β β β β βββ get-posts.ts
β β β β βββ get-private-post.ts
β β β β βββ get-private-posts.ts
β β β β βββ get-top-liked-posts.ts
β β β β βββ update-post.ts
β β β βββ components/
β β β βββ configure-post.tsx
β β β βββ create-post.tsx
β β β βββ delete-post.tsx
β β β βββ full-post.tsx
β β β βββ medium-post.tsx
β β β βββ posts-list.tsx
β β β βββ private-posts.tsx
β β β βββ private-posts-list.tsx
β β β βββ small-post.tsx
β β β βββ top-liked-post-list.tsx
β β β βββ update-post.tsx
β β β βββ skeletons/
β β β βββ full-post-skeleton.tsx
β β β βββ medium-post-skeleton.tsx
β β β βββ posts-list-skeleton.tsx
β β β βββ small-post-skeleton.tsx
β β β βββ top-liked-posts-list-skeleton.tsx
β β βββ threads/
β β β βββ api/
β β β β βββ create-thread.ts
β β β β βββ delete-thread.ts
β β β β βββ get-thread.ts
β β β β βββ get-threads.ts
β β β βββ components/
β β β βββ create-thread.tsx
β β β βββ delete-thread.tsx
β β β βββ full-thread.tsx
β β β βββ select-thread.tsx
β β β βββ small-thread.tsx
β β β βββ threads.tsx
β β β βββ threads-list.tsx
β β β βββ skeletons/
β β β βββ full-thread-skeleton.tsx
β β β βββ small-thread-skeleton.tsx
β β β βββ threads-list-skeleton.tsx
β β βββ users/
β β βββ api/
β β β βββ delete-user.ts
β β β βββ get-user.ts
β β β βββ get-users.ts
β β β βββ update-user.ts
β β βββ components/
β β βββ admin-users-list.tsx
β β βββ delete-user.tsx
β β βββ full-user.tsx
β β βββ small-user.tsx
β β βββ update-user-bio.tsx
β β βββ update-user-handler.tsx
β β βββ update-user-role.tsx
β β βββ skeletons/
β β βββ full-user-skeleton.tsx
β β βββ small-user-skeleton.tsx
β β βββ users-list-skeleton.tsx
β βββ lib/
β β βββ api-client.ts
β β βββ auth.ts
β β βββ authorization.ts
β β βββ react-query.ts
β β βββ redirect-client.ts
β β βββ utils.ts
β βββ styles/
β β βββ globals.css
β βββ types/
β β βββ api.ts
β βββ utils/
β βββ debounce.ts
β βββ format.ts
βββ .env
βββ .env.example
βββ .env.production
βββ .gitignore
βββ .prettierignore
βββ .prettierrc
βββ components.json
βββ eslint.config.mjs
βββ LICENSE
βββ next-env.d.ts
βββ next.config.ts
βββ package-lock.json
βββ package.json
βββ postcss.config.mjs
βββ README.md
βββ tsconfig.json
