Pour your heart out
This is a Next.js project bootstrapped with create-next-app
.
- Clone the repository:
git clone https://github.com/fvizpal/mechathon.git
- Intall dependencies:
npm install
- Run the development server:
npm run dev
Open http://localhost:3000 with your browser to see the result.
- Next.js
- Prisma
- Socketio
- ShadcnUI
- TailwindCSS
- Express
- Nodejs
- Typescript
- Login and signup using credentials and Google OAuth
- Email Verification and password reset functionality
- Creation of communities
- Creation of Groups within communities
- Invite others with community share link
- Manage members by changing their roles(ADMIN, MODERATOR, GUEST)
- Kick a member
- Search functionality for ease of access
- Realtime chat functionality
- Image and pdf transfer
- Realtime collaborative drawing functionality
- Edit and delete communities and groups
- Manage profile with user settings
src
│ types.ts
│
├───app
│ │ favicon.ico
│ │ globals.css
│ │ layout.tsx
│ │ page.tsx
│ │
│ ├───(land)
│ │ ├───about
│ │ │ page.tsx
│ │ │
│ │ ├───blog
│ │ │ page.tsx
│ │ │
│ │ └───contact
│ │ page.tsx
│ │
│ ├───(main)
│ │ │ layout.tsx
│ │ │
│ │ └───community
│ │ └───[communityId]
│ │ │ layout.tsx
│ │ │ page.tsx
│ │ │
│ │ └───groups
│ │ └───[groupId]
│ │ page.tsx
│ │
│ ├───api
│ │ ├───auth
│ │ │ └───[...nextauth]
│ │ │ route.ts
│ │ │
│ │ ├───communities
│ │ │ │ route.ts
│ │ │ │
│ │ │ └───[communityId]
│ │ │ │ route.ts
│ │ │ │
│ │ │ ├───invite
│ │ │ │ route.ts
│ │ │ │
│ │ │ └───leave
│ │ │ route.ts
│ │ │
│ │ ├───groups
│ │ │ │ route.ts
│ │ │ │
│ │ │ └───[groupId]
│ │ │ route.ts
│ │ │
│ │ ├───members
│ │ │ └───[memberId]
│ │ │ route.ts
│ │ │
│ │ ├───messages
│ │ │ route.ts
│ │ │
│ │ ├───pusher-auth
│ │ │ route.ts
│ │ │
│ │ └───uploadthing
│ │ core.ts
│ │ route.ts
│ │
│ ├───auth
│ │ ├───new-password
│ │ │ page.tsx
│ │ │
│ │ ├───new-verification
│ │ │ page.tsx
│ │ │
│ │ └───reset
│ │ page.tsx
│ │
│ ├───invite
│ │ └───[inviteCode]
│ │ page.tsx
│ │
│ └───onboard
│ page.tsx
│
├───components
│ ├───chat
│ │ ChatHeader.tsx
│ │ ChatInput.tsx
│ │ ChatMessages.tsx
│ │ VideoPlayer.tsx
│ │
│ ├───community
│ │ CommunityGroup.tsx
│ │ CommunityHeader.tsx
│ │ CommunitySection.tsx
│ │ CommunitySidebar.tsx
│ │ CommunitySidebarSearch.tsx
│ │ SidebarMember.tsx
│ │
│ ├───draw
│ │ DrawPage.tsx
│ │
│ ├───modals
│ │ AuthModal.tsx
│ │ CreateCommunityModal.tsx
│ │ CreateGroupModal.tsx
│ │ DeleteCommunityModal.tsx
│ │ DeleteGroupModal.tsx
│ │ EditCommunity.tsx
│ │ EditGroupModal.tsx
│ │ InviteModal.tsx
│ │ LeaveCommunityModal.tsx
│ │ MemberModal.tsx
│ │ MessageFileModal.tsx
│ │ OnboardModal.tsx
│ │ UserSettings.tsx
│ │
│ ├───navigation
│ │ NavAddCommunity.tsx
│ │ NavigationItem.tsx
│ │ NavigationSidebar.tsx
│ │
│ ├───providers
│ │ modalProvider.tsx
│ │ socketProvider.tsx
│ │ themeProvider.tsx
│ │
│ ├───shared
│ │ CheckModal.tsx
│ │ EnterButton.tsx
│ │ FileUploader.tsx
│ │ Footer.tsx
│ │ FormError.tsx
│ │ FormSuccess.tsx
│ │ LoginForm.tsx
│ │ LogoutButton.tsx
│ │ MobileToggle.tsx
│ │ ModeToggle.tsx
│ │ NewPasswordForm.tsx
│ │ NewVerificationForm.tsx
│ │ PortFolio1.tsx
│ │ PortFolio2.tsx
│ │ PortFolio3.tsx
│ │ PortFolio4.tsx
│ │ RegisterForm.tsx
│ │ ResetForm.tsx
│ │ SocialLogin.tsx
│ │ UserAvatar.tsx
│ │ UserButton.tsx
│ │
│ └───ui
│ avatar.tsx
│ button.tsx
│ command.tsx
│ dialog.tsx
│ dropdown-menu.tsx
│ form.tsx
│ input.tsx
│ label.tsx
│ scroll-area.tsx
│ select.tsx
│ separator.tsx
│ sheet.tsx
│ textarea.tsx
│
├───hooks
│ useDraw.ts
│ useModalStore.ts
│ useOrigin.ts
│
├───lib
│ │ pusher.ts
│ │ uploadthing.ts
│ │ utils.ts
│ │
│ ├───actions
│ │ generatePasswordResetToken.ts
│ │ generateVerificationToken.ts
│ │ login.ts
│ │ logout.ts
│ │ newPassword.ts
│ │ newVerification.ts
│ │ register.ts
│ │ resetPassword.ts
│ │
│ ├───database
│ │ db.ts
│ │
│ └───mailer
│ index.ts
│
└───schemas
index.ts