{"id":21125379,"url":"https://github.com/sameerkali/expendifi_frontend","last_synced_at":"2025-06-13T16:40:22.964Z","repository":{"id":263048002,"uuid":"889135168","full_name":"sameerkali/expendifi_frontend","owner":"sameerkali","description":null,"archived":false,"fork":false,"pushed_at":"2024-12-18T17:17:11.000Z","size":455,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-14T11:41:24.656Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sameerkali.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-15T17:17:34.000Z","updated_at":"2024-12-20T03:16:30.000Z","dependencies_parsed_at":"2024-11-15T20:27:42.541Z","dependency_job_id":"956c00cd-c8cd-4fa2-a3af-557eb7ac3968","html_url":"https://github.com/sameerkali/expendifi_frontend","commit_stats":null,"previous_names":["sameerkali/expendifi_frontend"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/sameerkali/expendifi_frontend","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sameerkali%2Fexpendifi_frontend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sameerkali%2Fexpendifi_frontend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sameerkali%2Fexpendifi_frontend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sameerkali%2Fexpendifi_frontend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sameerkali","download_url":"https://codeload.github.com/sameerkali/expendifi_frontend/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sameerkali%2Fexpendifi_frontend/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259681181,"owners_count":22895246,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-20T04:33:18.135Z","updated_at":"2025-06-13T16:40:22.937Z","avatar_url":"https://github.com/sameerkali.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Project Structure\n\nThis repository follows a scalable Next.js App Router structure, suitable for a partner-side application  that includes public signup/login, protected dashboards, profile management, and ad management. It is designed with SEO and performance in mind, using components, hooks, and libraries that ensure clean code organization and maintainability.\n\n```text\nproject/\n├─ app/\n│  ├─ layout.tsx\n│  ├─ page.tsx\n│  ├─ metadata.ts\n│  ├─ (public-routes)/\n│  │  ├─ signup/\n│  │  │  ├─ page.tsx\n│  │  │  ├─ SignUpForm.tsx\n│  │  ├─ login/\n│  │  │  ├─ page.tsx\n│  │  │  ├─ LoginForm.tsx\n│  ├─ (protected)/\n│  │  ├─ dashboard/\n│  │  │  ├─ page.tsx               // Landing after login\n│  │  │  ├─ AddPostForm.tsx\n│  │  ├─ profile/\n│  │  │  ├─ page.tsx               // View profile\n│  │  │  ├─ EditProfileForm.tsx\n│  │  │  ├─ ProfileDetails.tsx\n│  │  ├─ ads/\n│  │  │  ├─ page.tsx               // List of ads created\n│  │  │  ├─ [adId]/\n│  │  │  │  ├─ page.tsx            // View specific ad\n│  │  │  │  ├─ EditAdForm.tsx\n│  ├─ (auth)/\n│  │  ├─ callback/\n│  │  │  ├─ page.tsx               // Auth callback if needed\n│  │  ├─ ...                        // Additional auth routes as required\n│\n├─ components/\n│  ├─ ui/\n│  │  ├─ Button.tsx\n│  │  ├─ Input.tsx\n│  │  ├─ Card.tsx\n│  │  ├─ Modal.tsx\n│  │  ├─ LoadingSpinner.tsx\n│  ├─ forms/\n│  │  ├─ FormWrapper.tsx            // Generic form wrapper for styling and validation\n│  │  ├─ FormField.tsx              // Generic input with label, error display\n│  ├─ layout/\n│  │  ├─ Header.tsx\n│  │  ├─ Footer.tsx\n│  │  ├─ Sidebar.tsx                // If a sidebar is needed after login\n│\n├─ lib/\n│  ├─ auth.ts                       // Next-Auth (or Auth.js) config and providers\n│  ├─ seo.ts                        // Default SEO configs with next-seo\n│  ├─ validations/                  // Zod schemas for validation\n│  │  ├─ userSchema.ts\n│  │  ├─ postSchema.ts\n│  │  ├─ profileSchema.ts\n│  ├─ api/                          // API helpers (e.g. axios instances, fetch wrappers)\n│  │  ├─ authAPI.ts                 // Auth-related API calls\n│  │  ├─ userAPI.ts                 // User/profile-related API calls\n│  │  ├─ adsAPI.ts                  // Ad-related API calls\n│\n├─ hooks/\n│  ├─ useAuth.ts                    // Hook to get auth user\n│  ├─ useProtectedRoute.ts          // Hook to redirect if not logged in\n│\n├─ styles/\n│  ├─ globals.css                   // Tailwind/reset and global styles\n│  ├─ variables.css                 // CSS variables if needed\n│\n├─ public/                           // Public assets (images, icons)\n│\n├─ next-env.d.ts\n├─ next.config.js\n├─ package.json\n└─ tsconfig.json\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsameerkali%2Fexpendifi_frontend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsameerkali%2Fexpendifi_frontend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsameerkali%2Fexpendifi_frontend/lists"}