/nextjs13-flexibble

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. πŸ¦„

Primary LanguageTypeScriptMIT LicenseMIT

Project Banner Project Banner

Flexibble is a community for creatives to share, grow, and get hired.

contributors last update forks stars open issues license


πŸ“” Table of Contents

🌟 About the Project


Next.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.

This repository houses an amazing Full Stack Next.js 13 Application. the application uses:

  • Use Next.js 13 App Router and Server side Rendering
  • Implement Filtering Functionality
  • Complete Pagination Capabilities
  • Handle image uploads
  • Understanding and writing proper TypeScript
  • Learn Grafbase - a serverless GraphQL platform

‼️ Folder Structure

Here is the code folder structure.

Flexibble-Web/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ api/
β”‚   β”‚   β”œβ”€β”€ auth/
|   |   |   |── [...nextauth]
|   |   |   |   └── route.ts
|   |   |   └── token
|   |   |       └── route.ts
β”‚   β”‚   └── upload/
|   |       └── route.ts
β”‚   β”œβ”€β”€ create-project/
|   |   └── page.tsx
β”‚   β”œβ”€β”€ edit-project/
β”‚   β”‚   └── [id]/
|   |       └── page.tsx
β”‚   β”œβ”€β”€ profile/
β”‚   β”‚   └── [id]/
|   |       └── page.tsx
β”‚   β”œβ”€β”€ project/
β”‚   β”‚   └── [id]/
|   |       └── page.tsx
β”‚   β”œβ”€β”€ favicon.ico
β”‚   β”œβ”€β”€ globals.css
β”‚   β”œβ”€β”€ layout.tsx
β”‚   └── page.tsx
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ client/
β”‚   β”‚   β”œβ”€β”€ AuthProviders.tsx
β”‚   β”‚   β”œβ”€β”€ Categories.tsx
β”‚   β”‚   β”œβ”€β”€ Modal.tsx
β”‚   β”‚   β”œβ”€β”€ Pagination.tsx
β”‚   β”‚   β”œβ”€β”€ ProfileMenu.tsx
β”‚   β”‚   β”œβ”€β”€ ProjectActions.tsx
β”‚   β”‚   β”œβ”€β”€ ProjectCard.tsx
β”‚   β”‚   β”œβ”€β”€ ProjectForm.tsx
β”‚   β”‚   └── index.ts
β”‚   β”œβ”€β”€ server/
β”‚   β”‚   β”œβ”€β”€ Button.tsx
β”‚   β”‚   β”œβ”€β”€ CustomMenu.tsx
β”‚   β”‚   β”œβ”€β”€ Footer.tsx
β”‚   β”‚   β”œβ”€β”€ Navbar.tsx
β”‚   β”‚   β”œβ”€β”€ FormField.tsx
β”‚   β”‚   β”œβ”€β”€ ProfilePage.tsx
β”‚   β”‚   └── RelatedProjects.tsx
|   └── ...
β”œβ”€β”€ constants/
|   └── index.ts
β”œβ”€β”€ grafbase/
β”‚   β”œβ”€β”€ .env
β”‚   └── grafbase.config.ts
β”œβ”€β”€ graphql/
β”‚   └── index.ts
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ actions.ts
β”‚   └── session.ts
β”œβ”€β”€ public/
β”‚   └── ...
β”œβ”€β”€ .env
β”œβ”€β”€ common.types.ts
β”œβ”€β”€ next.config.js
β”œβ”€β”€ package.json
β”œβ”€β”€ postcss.config.js
β”œβ”€β”€ tsconfig.json
└── tailwind.config.js

πŸ‘Ύ Tech Stack

Tech

(back to top)

πŸ”‘ Environment Variables

Flexibble Web web application uses Grafbase, Cloudinary and Google Cloud to handle authentication, storage and database. Therefore, you need to create accounts on Grafbase, Cloudinary and Google Cloud and get your API keys and add them to the environment variables in the .env file.

To run this project, you will need to add the following environment variables to your .env file

NEXT_PUBLIC_GRAFBASE_API_URL=<GRAFBASE_API_URL>
NEXT_PUBLIC_GRAFBASE_API_KEY=<GRAFBASE_API_KEY>
GOOGLE_CLIENT_ID=<GOOGLE_CLIENT_ID>
GOOGLE_CLIENT_SECRET=<GOOGLE_CLIENT_SECRET>
NEXTAUTH_SECRET=<NEXTAUTH_SECRET>
NEXTAUTH_URL=<NEXTAUTH_URL>
CLOUDINARY_CLOUD_NAME=<CLOUDINARY_CLOUD_NAME>
CLOUDINARY_API_KEY=<CLOUDINARY_API_KEY>
CLOUDINARY_API_SECRET=<CLOUDINARY_API_SECRET>

Also, you need to add the following environment variables to your .env file at grafbase/ folder

NEXTAUTH_SECRET=<NEXTAUTH_SECRET>

(back to top)

🧰 Getting Started

This is a Next.js project bootstrapped with create-next-app.

Getting Started

First, run the development server:

npm run dev
# or
yarn dev
# or
pnpm dev

Open http://localhost:3000 with your browser to see the result.

You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.

This project uses next/font to automatically optimize and load Inter, a custom Google Font.

Learn More

To learn more about Next.js, take a look at the following resources:

You can check out the Next.js GitHub repository - your feedback and contributions are welcome!

Deploy on Vercel

The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.

Check out our Next.js deployment documentation for more details.

(back to top)

πŸ“· Screenshots

(back to top)

πŸ‘‹ Contributing

Contributions are always welcome!

See contributing.md for ways to get started.

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If 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". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

⚠️ License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

🀝 Contact

Liron Abutbul - @lironabutbul6 - @ladunjexa

Project Link: https://github.com/ladunjexa/Flexibble-Web

(back to top)

πŸ’Ž Acknowledgements

This section used to mention useful resources and libraries that used in Flexibble Web project.

(back to top)