A modern, full-stack web application for a music school, built with Next.js, TypeScript, and Tailwind CSS. This platform enables students to explore courses, view instructor profiles, showcase their performances, and manage their learning journey.
- Authentication: Secure user signup and login using JWT and Bcrypt.
- Course Management: Browse and view detailed information about various music courses.
- Instructor Profiles: Meet the faculty with detailed instructor bios.
- Student Showcase: An interactive gallery for students to upload and share their video/audio performances.
- Testimonials: Read success stories and feedback from students and parents.
- Contact Form: Integrated contact form with email notifications using Nodemailer.
- Responsive Design: Fully responsive UI built with Tailwind CSS and Framer Motion for smooth animations.
- State Management: Efficient global state management using Redux Toolkit.
- Framework: Next.js 14
- Language: TypeScript
- Styling: Tailwind CSS
- Animations: Framer Motion
- UI Components: Custom components & Aceternity UI
- API: Next.js API Routes
- Database: MongoDB
- ORM: Mongoose
- Authentication: JSON Web Tokens (JWT)
- Forms: React Hook Form + Zod
- State Management: Redux Toolkit
- Email: Nodemailer
Follow these steps to set up the project locally.
- Node.js (v18 or higher)
- MongoDB (Local or Atlas connection string)
-
Clone the repository
git clone https://github.com/sachinkg-13/echoedtech.git cd echoedtech -
Install dependencies
npm install
-
Set up Environment Variables Create a
.envfile in the root directory and add the following variables:MONGO_URI=your_mongodb_connection_string TOKEN_SECRET=your_jwt_secret_key DOMAIN=http://localhost:3000 # Add other necessary variables (e.g., for Nodemailer)
-
Run the development server
npm run dev
-
Open the application Visit http://localhost:3000 in your browser.
src/
├── app/ # Next.js App Router pages and API routes
│ ├── api/ # Backend API endpoints
│ ├── (auth)/ # Authentication routes
│ └── ... # Other application routes
├── components/ # Reusable UI components
│ ├── ui/ # Generic UI elements (buttons, cards, etc.)
│ └── ... # Feature-specific components
├── dbConnect/ # Database connection logic
├── models/ # Mongoose data models
├── store/ # Redux store configuration
├── utils/ # Helper functions and utilities
└── ...
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License.