{"id":25855907,"url":"https://github.com/ladunjexa-pbl/nextjs13-flexibble","last_synced_at":"2025-07-28T12:43:13.928Z","repository":{"id":176568404,"uuid":"658699504","full_name":"ladunjexa-pbl/nextjs13-flexibble","owner":"ladunjexa-pbl","description":"Flexibble is an online community and platform for designers, illustrators, and other creative professionals to showcase their work, connect with others in the industry, and find inspiration. 🦄","archived":false,"fork":false,"pushed_at":"2024-05-13T18:32:52.000Z","size":3186,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-18T16:40:42.556Z","etag":null,"topics":["cloudinary","grafbase","graphql","headlessui-react","jwt-auth","nextauthjs","nextjs13-typescript","tailwindcss"],"latest_commit_sha":null,"homepage":"https://flexibble-web.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ladunjexa-pbl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2023-06-26T10:09:33.000Z","updated_at":"2025-01-14T04:21:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"40ce8d75-a112-4eef-bd5d-be5dfa6bb1ed","html_url":"https://github.com/ladunjexa-pbl/nextjs13-flexibble","commit_stats":null,"previous_names":["ladunjexa/flexibble-web","ladunjexa/nextjs13-flexibble","ladunjexa-pbl/nextjs13-flexibble"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ladunjexa-pbl/nextjs13-flexibble","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ladunjexa-pbl%2Fnextjs13-flexibble","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ladunjexa-pbl%2Fnextjs13-flexibble/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ladunjexa-pbl%2Fnextjs13-flexibble/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ladunjexa-pbl%2Fnextjs13-flexibble/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ladunjexa-pbl","download_url":"https://codeload.github.com/ladunjexa-pbl/nextjs13-flexibble/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ladunjexa-pbl%2Fnextjs13-flexibble/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261255849,"owners_count":23131474,"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":["cloudinary","grafbase","graphql","headlessui-react","jwt-auth","nextauthjs","nextjs13-typescript","tailwindcss"],"created_at":"2025-03-01T17:43:38.345Z","updated_at":"2025-07-28T12:43:13.915Z","avatar_url":"https://github.com/ladunjexa-pbl.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n![Project Banner](.github/assets/readme_banner.png#gh-dark-mode-only)\n![Project Banner](.github/assets/readme_banner-light.png#gh-light-mode-only)\n\n  \u003cimg src=\"./public/logo-purple.svg\" width=\"25%\" /\u003e\n  \u003cp\u003e\n  Flexibble is a community for creatives to share, grow, and get hired.\n  \u003c/p\u003e\n\n\u003c!-- Badges --\u003e\n\u003cp\u003e\n  \u003ca href=\"https://github.com/ladunjexa/Flexibble-Web/graphs/contributors\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/contributors/ladunjexa/Flexibble-Web\" alt=\"contributors\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/last-commit/ladunjexa/Flexibble-Web\" alt=\"last update\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/ladunjexa/Flexibble-Web/network/members\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/forks/ladunjexa/Flexibble-Web\" alt=\"forks\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/ladunjexa/Flexibble-Web/stargazers\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/stars/ladunjexa/Flexibble-Web\" alt=\"stars\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/ladunjexa/Flexibble-Web/issues/\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/issues/ladunjexa/Flexibble-Web\" alt=\"open issues\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/ladunjexa/Flexibble-Web/blob/master/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/ladunjexa/Flexibble-Web.svg\" alt=\"license\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n   \n \u003ch4\u003e\n    \u003ca href=\"https://flexibble-web.vercel.app/\"\u003eView Demo\u003c/a\u003e\n  \u003cspan\u003e · \u003c/span\u003e\n    \u003ca href=\"https://github.com/ladunjexa/Flexibble-Web\"\u003eDocumentation\u003c/a\u003e\n  \u003cspan\u003e · \u003c/span\u003e\n    \u003ca href=\"https://github.com/ladunjexa/Flexibble-Web/issues/\"\u003eReport Bug\u003c/a\u003e\n  \u003cspan\u003e · \u003c/span\u003e\n    \u003ca href=\"https://github.com/ladunjexa/Flexibble-Web/issues/\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/h4\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n\u003c!-- Table of Contents --\u003e\n\u003cdetails\u003e\n\n\u003csummary\u003e\n\n# :notebook_with_decorative_cover: Table of Contents\n\n\u003c/summary\u003e\n\n- [About the Project](#star2-about-the-project)\n  - [Folder Structure](#bangbang-folder-structure)\n  - [Tech Stack](#space_invader-tech-stack)\n  - [Environment Variables](#key-environment-variables)\n- [Getting Started](#toolbox-getting-started)\n- [Screenshots](#camera-screenshots)\n- [Contributing](#wave-contributing)\n- [License](#warning-license)\n- [Contact](#handshake-contact)\n- [Acknowledgements](#gem-acknowledgements)\n\n\u003c/details\u003e\n\n\u003c!-- About the Project --\u003e\n\n## :star2: About the Project\n\n\u003cdiv align=\"center\"\u003e \n  \u003cimg src=\".github/assets/img1.png\" height=\"auto\" width=\"90%\" /\u003e\n\u003c/div\u003e\n\u003cbr /\u003e\nNext.js has the potential to revolutionize the industry and forever change the way we develop web applications. You’re still early in catching the trend and building your own Next.js 13 applications with TypeScript that leverage features such as server-side rendering and the app router.\n\nThis repository houses an amazing Full Stack Next.js 13 Application. the application uses:\n- Use Next.js 13 App Router and Server side Rendering\n- Implement Filtering Functionality\n- Complete Pagination Capabilities\n- Handle image uploads\n- Understanding and writing proper TypeScript\n- Learn Grafbase - a serverless GraphQL platform\n\n\u003c!-- Folder Structure --\u003e\n\n### :bangbang: Folder Structure\n\nHere is the code folder structure.\n```\nFlexibble-Web/\n├── app/\n│   ├── api/\n│   │   ├── auth/\n|   |   |   |── [...nextauth]\n|   |   |   |   └── route.ts\n|   |   |   └── token\n|   |   |       └── route.ts\n│   │   └── upload/\n|   |       └── route.ts\n│   ├── create-project/\n|   |   └── page.tsx\n│   ├── edit-project/\n│   │   └── [id]/\n|   |       └── page.tsx\n│   ├── profile/\n│   │   └── [id]/\n|   |       └── page.tsx\n│   ├── project/\n│   │   └── [id]/\n|   |       └── page.tsx\n│   ├── favicon.ico\n│   ├── globals.css\n│   ├── layout.tsx\n│   └── page.tsx\n├── components/\n│   ├── client/\n│   │   ├── AuthProviders.tsx\n│   │   ├── Categories.tsx\n│   │   ├── Modal.tsx\n│   │   ├── Pagination.tsx\n│   │   ├── ProfileMenu.tsx\n│   │   ├── ProjectActions.tsx\n│   │   ├── ProjectCard.tsx\n│   │   ├── ProjectForm.tsx\n│   │   └── index.ts\n│   ├── server/\n│   │   ├── Button.tsx\n│   │   ├── CustomMenu.tsx\n│   │   ├── Footer.tsx\n│   │   ├── Navbar.tsx\n│   │   ├── FormField.tsx\n│   │   ├── ProfilePage.tsx\n│   │   └── RelatedProjects.tsx\n|   └── ...\n├── constants/\n|   └── index.ts\n├── grafbase/\n│   ├── .env\n│   └── grafbase.config.ts\n├── graphql/\n│   └── index.ts\n├── lib/\n│   ├── actions.ts\n│   └── session.ts\n├── public/\n│   └── ...\n├── .env\n├── common.types.ts\n├── next.config.js\n├── package.json\n├── postcss.config.js\n├── tsconfig.json\n└── tailwind.config.js\n```\n\n\u003c!-- TechStack --\u003e\n\n### :space_invader: Tech Stack\n\n[![Tech](https://skillicons.dev/icons?i=ts,react,nextjs,tailwind,graphql)](https://skillicons.dev)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- Environment Variables --\u003e\n\n### :key: Environment Variables\n\n_Flexibble Web_ web application uses [Grafbase](https://grafbase.com/), [Cloudinary](https://cloudinary.com/) and [Google Cloud](https://cloud.google.com/) to handle authentication, storage and database. Therefore, you need to create accounts on [Grafbase](https://grafbase.com/), [Cloudinary](https://cloudinary.com/) and [Google Cloud](https://cloud.google.com/) and get your API keys and add them to the environment variables in the `.env` file.\n\nTo run this project, you will need to add the following environment variables to your .env file\n\n```env\nNEXT_PUBLIC_GRAFBASE_API_URL=\u003cGRAFBASE_API_URL\u003e\nNEXT_PUBLIC_GRAFBASE_API_KEY=\u003cGRAFBASE_API_KEY\u003e\nGOOGLE_CLIENT_ID=\u003cGOOGLE_CLIENT_ID\u003e\nGOOGLE_CLIENT_SECRET=\u003cGOOGLE_CLIENT_SECRET\u003e\nNEXTAUTH_SECRET=\u003cNEXTAUTH_SECRET\u003e\nNEXTAUTH_URL=\u003cNEXTAUTH_URL\u003e\nCLOUDINARY_CLOUD_NAME=\u003cCLOUDINARY_CLOUD_NAME\u003e\nCLOUDINARY_API_KEY=\u003cCLOUDINARY_API_KEY\u003e\nCLOUDINARY_API_SECRET=\u003cCLOUDINARY_API_SECRET\u003e\n```\n\nAlso, you need to add the following environment variables to your .env file at `grafbase/` folder\n\n```env\nNEXTAUTH_SECRET=\u003cNEXTAUTH_SECRET\u003e\n```\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- Getting Started --\u003e\n\n## :toolbox: Getting Started\n\nThis is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).\n\n### Getting Started\n\nFirst, run the development server:\n\n```bash\nnpm run dev\n# or\nyarn dev\n# or\npnpm dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\nYou can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.\n\nThis project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.\n\n### Learn More\n\nTo learn more about Next.js, take a look at the following resources:\n\n- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.\n- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.\n\nYou can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!\n\n### Deploy on Vercel\n\nThe easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template\u0026filter=next.js\u0026utm_source=create-next-app\u0026utm_campaign=create-next-app-readme) from the creators of Next.js.\n\nCheck out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- Screenshots --\u003e\n\n## :camera: Screenshots\n\n\u003cdiv align=\"center\"\u003e \n  \u003cimg src=\".github/assets/img1.png\" height=\"auto\" width=\"80%\" /\u003e\n  \u003cimg src=\".github/assets/img2.png\" height=\"auto\" width=\"80%\" /\u003e\n  \u003cimg src=\".github/assets/img3.png\" height=\"auto\" width=\"80%\" /\u003e\n  \u003cimg src=\".github/assets/img4.png\" height=\"auto\" width=\"80%\" /\u003e\n\u003c/div\u003e\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- Contributing --\u003e\n\n## :wave: Contributing\n\n\u003ca href=\"https://github.com/ladunjexa/Flexibble-Web/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=ladunjexa/Flexibble-Web\" /\u003e\n\u003c/a\u003e\n\nContributions are always welcome!\n\nSee [`contributing.md`](https://contributing.md/) for ways to get started.\n\nContributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\nIf you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag \"enhancement\".\nDon't forget to give the project a star! Thanks again!\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- License --\u003e\n\n## :warning: License\n\nDistributed under the MIT License. See [LICENSE.txt](https://github.com/ladunjexa/Flexibble-Web/blob/main/LICENSE) for more information.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- Contact --\u003e\n\n## :handshake: Contact\n\nLiron Abutbul - [@lironabutbul6](https://twitter.com/lironabutbul6) - [@ladunjexa](https://t.me/ladunjexa)\n\nProject Link: [https://github.com/ladunjexa/Flexibble-Web](https://github.com/ladunjexa/Flexibble-Web)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- Acknowledgments --\u003e\n\n## :gem: Acknowledgements\n\nThis section used to mention useful resources and libraries that used in Flexibble Web project.\n\n- [NextJS](https://nextjs.org/)\n- [React](https://reactjs.org/)\n- [React-DOM](https://www.npmjs.com/package/react-dom)\n- [TypeScript](https://www.typescriptlang.org/)\n- [TailwindCSS](https://tailwindcss.com/)\n- [@headlessui/react](https://headlessui.dev/)\n- [Cloudinary](https://cloudinary.com/)\n- [GraphQL](https://graphql.org/)\n- [GraphQL Request](https://www.npmjs.com/package/graphql-request)\n- [JWT](https://jwt.io/)\n- [NextAuth](https://next-auth.js.org/)\n- [Grafbase](https://grafbase.com/)\n- [@grafbase/sdk](https://www.npmjs.com/package/@grafbase/sdk)\n- #JSMastery\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fladunjexa-pbl%2Fnextjs13-flexibble","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fladunjexa-pbl%2Fnextjs13-flexibble","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fladunjexa-pbl%2Fnextjs13-flexibble/lists"}