Skip to content

client app for project and company registration by careerzen.

Notifications You must be signed in to change notification settings

Projectzenn/app

Repository files navigation

Banner

GitHub code size in bytes GitHub last commit GitHub commit activity month GitHub license

πŸ“Œ Overview

This app is a client app for project and company registration by CareerZen. It utilizes various libraries and tools such as headlessui/react, hookform/resolvers, pushprotocol/restapi, and more.

πŸ” Table of Contents

πŸ“ Project Structure

β”œβ”€β”€ .env
β”œβ”€β”€ .eslintrc.json
β”œβ”€β”€ .gitignore
β”œβ”€β”€ README.md
β”œβ”€β”€ app
β”‚   β”œβ”€β”€ app.tsx
β”‚   β”œβ”€β”€ favicon.ico
β”‚   β”œβ”€β”€ globals.css
β”‚   β”œβ”€β”€ group
β”‚   β”‚   └── [address]
β”‚   β”‚       β”œβ”€β”€ add-achievement.tsx
β”‚   β”‚       β”œβ”€β”€ create-achievement.tsx
β”‚   β”‚       β”œβ”€β”€ group-achievements.tsx
β”‚   β”‚       β”œβ”€β”€ group-details.tsx
β”‚   β”‚       β”œβ”€β”€ group-member.tsx
β”‚   β”‚       β”œβ”€β”€ group-recruits.tsx
β”‚   β”‚       └── page.tsx
β”‚   β”œβ”€β”€ groups
β”‚   β”‚   β”œβ”€β”€ create
β”‚   β”‚   β”‚   β”œβ”€β”€ group-form.tsx
β”‚   β”‚   β”‚   └── page.tsx
β”‚   β”‚   β”œβ”€β”€ group-list-item.tsx
β”‚   β”‚   β”œβ”€β”€ group-list.tsx
β”‚   β”‚   β”œβ”€β”€ layout.tsx
β”‚   β”‚   β”œβ”€β”€ my-groups.tsx
β”‚   β”‚   └── page.tsx
β”‚   β”œβ”€β”€ layout.tsx
β”‚   β”œβ”€β”€ nav-bar.tsx
β”‚   β”œβ”€β”€ nft
β”‚   β”‚   β”œβ”€β”€ [contract]
β”‚   β”‚   β”‚   └── [tokenid]
β”‚   β”‚   β”‚       └── page.tsx
β”‚   β”‚   └── create
β”‚   β”‚       β”œβ”€β”€ create-achievement-form.tsx
β”‚   β”‚       └── page.tsx
β”‚   β”œβ”€β”€ onboard
β”‚   β”‚   β”œβ”€β”€ layout.tsx
β”‚   β”‚   β”œβ”€β”€ mint
β”‚   β”‚   β”‚   └── page.tsx
β”‚   β”‚   β”œβ”€β”€ page.tsx
β”‚   β”‚   β”œβ”€β”€ profile-form.tsx
β”‚   β”‚   └── profile
β”‚   β”‚       └── page.tsx
β”‚   β”œβ”€β”€ page.tsx
β”‚   β”œβ”€β”€ profile
β”‚   β”‚   β”œβ”€β”€ avatar-nfts.tsx
β”‚   β”‚   β”œβ”€β”€ connections.tsx
β”‚   β”‚   β”œβ”€β”€ followers.tsx
β”‚   β”‚   β”œβ”€β”€ layout.tsx
β”‚   β”‚   β”œβ”€β”€ mint-avatar.tsx
β”‚   β”‚   β”œβ”€β”€ page.tsx
β”‚   β”‚   β”œβ”€β”€ profile-detail-card.tsx
β”‚   β”‚   β”œβ”€β”€ profile-details.tsx
β”‚   β”‚   β”œβ”€β”€ profile-items.tsx
β”‚   β”‚   β”œβ”€β”€ profile-nft-item.tsx
β”‚   β”‚   └── select
β”‚   β”‚       β”œβ”€β”€ nft-owned.tsx
β”‚   β”‚       └── page.tsx
β”‚   β”œβ”€β”€ profiles
β”‚   β”‚   β”œβ”€β”€ [id]
β”‚   β”‚   β”‚   β”œβ”€β”€ layout.tsx
β”‚   β”‚   β”‚   └── page.tsx
β”‚   β”‚   β”œβ”€β”€ list-profiles.tsx
β”‚   β”‚   └── page.tsx
β”‚   └── project
β”‚       β”œβ”€β”€ [address]
β”‚       β”‚   β”œβ”€β”€ links.tsx
β”‚       β”‚   β”œβ”€β”€ page.tsx
β”‚       β”‚   β”œβ”€β”€ project-detail.tsx
β”‚       β”‚   β”œβ”€β”€ project-info.tsx
β”‚       β”‚   β”œβ”€β”€ project-members.tsx
β”‚       β”‚   β”œβ”€β”€ project-nfts.tsx
β”‚       β”‚   β”œβ”€β”€ project-works.tsx
β”‚       β”‚   └── request-nft.tsx
β”‚       β”œβ”€β”€ create
β”‚       β”‚   └── page.tsx
β”‚       β”œβ”€β”€ layout.tsx
β”‚       β”œβ”€β”€ page.tsx
β”‚       └── project-item.tsx
β”œβ”€β”€ components.json
β”œβ”€β”€ components
β”‚   β”œβ”€β”€ card
β”‚   β”‚   β”œβ”€β”€ group-profile-card.tsx
β”‚   β”‚   β”œβ”€β”€ member-card.tsx
β”‚   β”‚   β”œβ”€β”€ nft-list-item-loading.tsx
β”‚   β”‚   β”œβ”€β”€ nft-list-item.tsx
β”‚   β”‚   β”œβ”€β”€ pending-profile-card.tsx
β”‚   β”‚   └── profile-card.tsx
β”‚   β”œβ”€β”€ connections
β”‚   β”‚   └── github.tsx
β”‚   β”œβ”€β”€ extra
β”‚   β”‚   β”œβ”€β”€ add-member-item.tsx
β”‚   β”‚   β”œβ”€β”€ add-member.tsx
β”‚   β”‚   β”œβ”€β”€ chat
β”‚   β”‚   β”‚   β”œβ”€β”€ chat.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ create-push-group.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ message-item.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ openchat.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ push-chat.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ push-group-chat.tsx
β”‚   β”‚   β”‚   └── user-chat.tsx
β”‚   β”‚   β”œβ”€β”€ media-uploader.tsx
β”‚   β”‚   └── search.tsx
β”‚   β”œβ”€β”€ form
β”‚   β”‚   └── request-nft-form.tsx
β”‚   β”œβ”€β”€ loading.json
β”‚   β”œβ”€β”€ loading.tsx
β”‚   β”œβ”€β”€ modal
β”‚   β”‚   β”œβ”€β”€ modal-layout.tsx
β”‚   β”‚   β”œβ”€β”€ nft-detail-modal.tsx
β”‚   β”‚   └── upload-works.tsx
β”‚   β”œβ”€β”€ nft
β”‚   β”‚   β”œβ”€β”€ display-nft.tsx
β”‚   β”‚   └── pending-nft.tsx
β”‚   β”œβ”€β”€ screens
β”‚   β”‚   β”œβ”€β”€ error.tsx
β”‚   β”‚   β”œβ”€β”€ loading.tsx
β”‚   β”‚   β”œβ”€β”€ no-data.tsx
β”‚   β”‚   └── transaction-data.tsx
β”‚   β”œβ”€β”€ theme-provider.tsx
β”‚   β”œβ”€β”€ ui
β”‚   β”‚   β”œβ”€β”€ alert.tsx
β”‚   β”‚   β”œβ”€β”€ avatar.tsx
β”‚   β”‚   β”œβ”€β”€ badge.tsx
β”‚   β”‚   β”œβ”€β”€ button.tsx
β”‚   β”‚   β”œβ”€β”€ card.tsx
β”‚   β”‚   β”œβ”€β”€ command.tsx
β”‚   β”‚   β”œβ”€β”€ dialog.tsx
β”‚   β”‚   β”œβ”€β”€ form.tsx
β”‚   β”‚   β”œβ”€β”€ input.tsx
β”‚   β”‚   β”œβ”€β”€ label.tsx
β”‚   β”‚   β”œβ”€β”€ layer.tsx
β”‚   β”‚   β”œβ”€β”€ popover.tsx
β”‚   β”‚   β”œβ”€β”€ radio-group.tsx
β”‚   β”‚   β”œβ”€β”€ select.tsx
β”‚   β”‚   β”œβ”€β”€ skeleton.tsx
β”‚   β”‚   β”œβ”€β”€ switch.tsx
β”‚   β”‚   β”œβ”€β”€ table.tsx
β”‚   β”‚   β”œβ”€β”€ tabs.tsx
β”‚   β”‚   β”œβ”€β”€ textarea.tsx
β”‚   β”‚   β”œβ”€β”€ toast.tsx
β”‚   β”‚   β”œβ”€β”€ toaster.tsx
β”‚   β”‚   └── use-toast.ts
β”‚   └── user
β”‚       β”œβ”€β”€ connect-modal.tsx
β”‚       β”œβ”€β”€ create-profile-modal.tsx
β”‚       β”œβ”€β”€ login.tsx
β”‚       β”œβ”€β”€ modal-layout.tsx
β”‚       β”œβ”€β”€ profile-balance.tsx
β”‚       └── profile-details.tsx
β”œβ”€β”€ helpers
β”‚   β”œβ”€β”€ mumbai.tsx
β”‚   └── usePush.tsx
β”œβ”€β”€ lib
β”‚   β”œβ”€β”€ abi
β”‚   β”‚   β”œβ”€β”€ group.abi.json
β”‚   β”‚   β”œβ”€β”€ groupRegistry.abi.json
β”‚   β”‚   β”œβ”€β”€ project.abi.json
β”‚   β”‚   └── projectRegistry.abi.json
β”‚   β”œβ”€β”€ constants.ts
β”‚   β”œβ”€β”€ upload.ts
β”‚   β”œβ”€β”€ useFetchData.tsx
β”‚   β”œβ”€β”€ usePushProtocol.tsx
β”‚   └── utils.ts
β”œβ”€β”€ next.config.js
β”œβ”€β”€ package-lock.json
β”œβ”€β”€ package.json
β”œβ”€β”€ postcss.config.js
β”œβ”€β”€ public
β”‚   β”œβ”€β”€ icons
β”‚   β”‚   β”œβ”€β”€ TikTok=Color.png.zip
β”‚   β”‚   β”œβ”€β”€ discord.png
β”‚   β”‚   β”œβ”€β”€ dribbble.png
β”‚   β”‚   β”œβ”€β”€ ens.png
β”‚   β”‚   β”œβ”€β”€ facebook.png
β”‚   β”‚   β”œβ”€β”€ farcaster.png
β”‚   β”‚   β”œβ”€β”€ figma.png
β”‚   β”‚   β”œβ”€β”€ github.png
β”‚   β”‚   β”œβ”€β”€ instagram.png
β”‚   β”‚   β”œβ”€β”€ lenster.png
β”‚   β”‚   β”œβ”€β”€ link.png
β”‚   β”‚   β”œβ”€β”€ linkedin.png
β”‚   β”‚   β”œβ”€β”€ medium.png
β”‚   β”‚   β”œβ”€β”€ nextid.png
β”‚   β”‚   β”œβ”€β”€ note.png
β”‚   β”‚   β”œβ”€β”€ notion.png
β”‚   β”‚   β”œβ”€β”€ pinterest.png
β”‚   β”‚   β”œβ”€β”€ snapchat.png
β”‚   β”‚   β”œβ”€β”€ spotify.png
β”‚   β”‚   β”œβ”€β”€ threads.png
β”‚   β”‚   β”œβ”€β”€ tiktok.png
β”‚   β”‚   β”œβ”€β”€ tumblr.png
β”‚   β”‚   β”œβ”€β”€ twitter.png
β”‚   β”‚   β”œβ”€β”€ url.png
β”‚   β”‚   β”œβ”€β”€ x.png
β”‚   β”‚   └── youtube.png
β”‚   β”œβ”€β”€ images
β”‚   β”‚   β”œβ”€β”€ careerzen.png
β”‚   β”‚   β”œβ”€β”€ image.png
β”‚   β”‚   └── no-item.png
β”‚   β”œβ”€β”€ next.svg
β”‚   β”œβ”€β”€ parts
β”‚   β”‚   β”œβ”€β”€ acessary_basic1.png
β”‚   β”‚   β”œβ”€β”€ acessary_basic2.png
β”‚   β”‚   β”œβ”€β”€ acessary_basic3.png
β”‚   β”‚   β”œβ”€β”€ acessary_basic4.png
β”‚   β”‚   β”œβ”€β”€ acessary_basic5.png
β”‚   β”‚   β”œβ”€β”€ acessary_basic6.png
β”‚   β”‚   β”œβ”€β”€ acessary_basic7.png
β”‚   β”‚   β”œβ”€β”€ acessary_developer.png
β”‚   β”‚   β”œβ”€β”€ background.png
β”‚   β”‚   β”œβ”€β”€ cloth_basic.png
β”‚   β”‚   β”œβ”€β”€ cloth_hood1.png
β”‚   β”‚   β”œβ”€β”€ cloth_hood2.png
β”‚   β”‚   β”œβ”€β”€ cloth_hood3.png
β”‚   β”‚   β”œβ”€β”€ cloth_hood4.png
β”‚   β”‚   β”œβ”€β”€ cloth_jacket.png
β”‚   β”‚   β”œβ”€β”€ cloth_poor.png
β”‚   β”‚   β”œβ”€β”€ cloth_shirt.png
β”‚   β”‚   β”œβ”€β”€ cloth_wind.png
β”‚   β”‚   β”œβ”€β”€ eyes1.png
β”‚   β”‚   β”œβ”€β”€ eyes2.png
β”‚   β”‚   β”œβ”€β”€ eyes3.png
β”‚   β”‚   β”œβ”€β”€ eyes4.png
β”‚   β”‚   β”œβ”€β”€ face.png
β”‚   β”‚   β”œβ”€β”€ hair1.png
β”‚   β”‚   β”œβ”€β”€ hair2.png
β”‚   β”‚   β”œβ”€β”€ hair3.png
β”‚   β”‚   β”œβ”€β”€ hair4.png
β”‚   β”‚   β”œβ”€β”€ mouth1.png
β”‚   β”‚   β”œβ”€β”€ mouth2.png
β”‚   β”‚   └── mouth3.png
β”‚   └── vercel.svg
β”œβ”€β”€ tailwind.config.js
β”œβ”€β”€ tailwind.config.ts
└── tsconfig.json

πŸ“ Project Summary

πŸ’» Stack

  • headlessui/react: UI components for building accessible and customizable interfaces.
  • radix-ui/react-select: A flexible and accessible select component.
  • react-hook-form: Performant and flexible forms with easy validation.
  • next: A React framework for building server-rendered applications.
  • xmtp/react-sdk: SDK for integrating XMTP (Cross-Modal Transfer Protocol) into React applications.
  • ethers: A library for interacting with Ethereum.
  • lottie-react: Render After Effects animations natively in React.
  • tailwindcss: A utility-first CSS framework for rapid UI development.

βš™οΈ Setting Up

Your Environment Variable

  • Step 1

  • Step 2

πŸš€ Run Locally

1.Clone the app repository:

git clone https://github.com/Projectzenn/app

2.Install the dependencies with one of the package managers listed below:

pnpm install
bun install
npm install
yarn install

3.Start the development mode:

pnpm dev
bun dev
npm run dev
yarn dev

πŸ™Œ Contributors

☁️ Deploy

[Application name](Your App URL)

πŸ“„ License

Add Your License

Technologies used

The Graph

We heavily rely on the graph for integrating all indexing of on-chain data we build two graph that indexed:

Groups

Groups api repository Group Registry Group Regstry Contract link Group Contract - Achievements - Repository link

Projects

Project api Projects repositry Projects Registry Project Contract

Push Protocol

Push Chat

We use push protocol chats for three different occassions:

  • individual chat: for users to chat to eachother based on someone career status
  • group chat: chat for people that are in the same group: everyone that hold that token they are able to enter the groupchat and start chatting to each other. This can be used to collectively decide on new achievement design, requirements or the acceptance of new users
  • project chat: token based access to the project chat for all the users that hold the ERC721 token of the project.

Push Notification:

Within the project the members of the Project are able to setup notification channels for updates about newly added members, new achievements received or work uploaded. The group admin is able to setup the notification based to select or unselect any of the three selections above. If this select will be widely used by the users we are able to set up the some logic for groups to receive notification based on important changes.

Next.ID

Usage We will be using NEXT.id for the verifying the proofs of the github accounts and other social media accounts. We setup our platform, so we can start using next.id service for linking accounts together. When accounts are connected we might see integration based on acquired achievements. We will be analyzing overlapping activities together with skillsets to create a matching based career service, for projects.

Polybase

For our backend solution we use polybase to integrate offchain requests that needs to be validated by project owners or groups owners first, we do this to reduce the gas usage of users. Most of the gas costs are covered by the contract owners, this provide an easier way for users to start using and testing the application.

About

client app for project and company registration by careerzen.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published