|
| 1 | +<a name="readme-top"></a> |
| 2 | + |
| 3 | +# Room - A Video & Audio Meeting Platform |
| 4 | + |
| 5 | + |
| 6 | + |
| 7 | +## 📋 <a name="table">Table of Contents</a> |
| 8 | + |
| 9 | +1. [Introduction](#introduction) |
| 10 | +2. [Tech Stack](#tech-stack) |
| 11 | +3. [Features](#features) |
| 12 | +4. [Getting Started](#getting-started) |
| 13 | +5. [Assets & Code](#snippets) |
| 14 | +6. [More](#more) |
| 15 | + |
| 16 | +## <a name="introduction">Introduction</a> |
| 17 | + |
| 18 | +Built with the latest Next.js and TypeScript, this project replicates Zoom, a widely used video conferencing tool. It enables users to securely log in, create meetings and access various meeting functionalities such as recording, screen sharing, and managing participants. |
| 19 | + |
| 20 | +## <a name="tech-stack">Tech Stack</a> |
| 21 | + |
| 22 | +- Next.js |
| 23 | +- TypeScript |
| 24 | +- Clerk |
| 25 | +- getstream |
| 26 | +- shadcn |
| 27 | +- Tailwind CSS |
| 28 | + |
| 29 | +## <a name="features">Features</a> |
| 30 | + |
| 31 | +**Authentication**: Implements authentication and authorization features using Clerk, allowing users to securely log in via social sign-on or traditional email and password methods, while ensuring appropriate access levels and permissions within the platform. |
| 32 | + |
| 33 | +**New Meeting**: Quickly start a new meeting, configuring camera and microphone settings before joining. |
| 34 | + |
| 35 | +**Meeting Controls**: Participants have full control over meeting aspects, including recording, emoji reactions, screen sharing, muting/unmuting, sound adjustments, grid layout, participant list view, and individual participant management (pinning, muting, unmuting, blocking, allowing video share). |
| 36 | + |
| 37 | +**Exit Meeting**: Participants can leave a meeting, or creators can end it for all attendees. |
| 38 | + |
| 39 | +**Schedule Future Meetings**: Input meeting details (date, time) to schedule future meetings, accessible on the 'Upcoming Meetings' page for sharing the link or immediate start. |
| 40 | + |
| 41 | +**Past Meetings List**: Access a list of previously held meetings, including details and metadata. |
| 42 | + |
| 43 | +**View Recorded Meetings**: Access recordings of past meetings for review or reference. |
| 44 | + |
| 45 | +**Personal Room**: Users have a personal room with a unique meeting link for instant meetings, shareable with others. |
| 46 | + |
| 47 | +**Join Meetings via Link**: Easily join meetings created by others by providing a link. |
| 48 | + |
| 49 | +**Secure Real-time Functionality**: All interactions within the platform are secure and occur in real-time, maintaining user privacy and data integrity. |
| 50 | + |
| 51 | +**Responsive Design**: Follows responsive design principles to ensure optimal user experience across devices, adapting seamlessly to different screen sizes and resolutions. |
| 52 | + |
| 53 | +and many more, including code architecture and reusability. |
| 54 | + |
| 55 | +## <a name="getting-started">Getting Started</a> |
| 56 | + |
| 57 | +**Make sure you have the following installed on your machine** |
| 58 | + |
| 59 | +- [Git](https://git-scm.com/) |
| 60 | +- [Node.js](https://nodejs.org/en) |
| 61 | +- [npm](https://www.npmjs.com/) (Node Package Manager) |
| 62 | + |
| 63 | +**Cloning the Repository** |
| 64 | + |
| 65 | +```bash |
| 66 | +git clone https://github.com/theankushshah/room.git |
| 67 | +cd zoom-clone |
| 68 | +``` |
| 69 | + |
| 70 | +**Installation** |
| 71 | + |
| 72 | +Install the project dependencies using npm: |
| 73 | + |
| 74 | +```bash |
| 75 | +npm install |
| 76 | +``` |
| 77 | + |
| 78 | +**Set Up Environment Variables** |
| 79 | + |
| 80 | +Create a new file named `.env` in the root of your project and add the following content: |
| 81 | + |
| 82 | +```env |
| 83 | +NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY= |
| 84 | +CLERK_SECRET_KEY= |
| 85 | +
|
| 86 | +NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in |
| 87 | +NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up |
| 88 | +
|
| 89 | +NEXT_PUBLIC_STREAM_API_KEY= |
| 90 | +STREAM_SECRET_KEY= |
| 91 | +``` |
| 92 | + |
| 93 | +Replace the placeholder values with your actual Clerk & getstream credentials. You can obtain these credentials by signing up on the [Clerk website](https://clerk.com/) and [getstream website](https://getstream.io/) |
| 94 | + |
| 95 | +**Running the Project** |
| 96 | + |
| 97 | +```bash |
| 98 | +npm run dev |
| 99 | +``` |
| 100 | + |
| 101 | +Open [http://localhost:3000](http://localhost:3000) in your browser to view the project. |
| 102 | + |
| 103 | +## More Screenshots |
| 104 | + |
| 105 | + |
| 106 | + |
| 107 | + |
| 108 | + |
| 109 | + |
| 110 | + |
| 111 | + |
| 112 | + |
| 113 | +## Feedback |
| 114 | + |
| 115 | +You might encounter some bugs while using this app. You are more than welcome to contribute. Just submit changes via pull request and I will review them before merging. Make sure you follow community guidelines. |
| 116 | + |
| 117 | +## Developer & Main |
| 118 | + |
| 119 | +- Ankush Shah ( [email protected]) (Main) |
| 120 | + |
| 121 | +Happy coding! 🚀 |
0 commit comments