https://github.com/leonardo1903/echovault
https://github.com/leonardo1903/echovault
mongodb next-auth nextjs typescript
Last synced: 22 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/leonardo1903/echovault
- Owner: Leonardo1903
- Created: 2024-09-18T07:20:27.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-11-10T13:55:21.000Z (about 1 year ago)
- Last Synced: 2025-02-08T12:46:24.427Z (9 months ago)
- Topics: mongodb, next-auth, nextjs, typescript
- Language: TypeScript
- Homepage: https://echo-vault.vercel.app
- Size: 1.12 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# EchoVault
**An anonymous feedback platform designed to foster open and honest communication.**
EchoVault allows anyone to send and receive anonymous messages, enhanced with AI-generated suggestions to promote constructive dialogue. It's built for security, privacy, and a seamless user experience, from secure sign-on to a personalized feedback dashboard.
[**Live Demo**](https://echovault.leonardo1903.me/)
---
## ✨ Core Features
- **🤫 True Anonymity**: Send feedback to any registered user without needing to sign up yourself.
- **🤖 AI-Powered Suggestions**: Get intelligent, context-aware message suggestions from Google Gemini to help you start the conversation.
- **🔐 Secure Authentication**: Robust and secure user registration and login system powered by NextAuth.
- **📊 Personal Feedback Dashboard**: A private, personalized dashboard for registered users to view and manage all their received messages.
- **🗑️ Full Message Control**: Users have complete control to view, manage, and delete the messages they receive.
## 🛠️ Tech Stack
| Category | Technologies |
| :--------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Framework** |  |
| **UI/Styling** |   |
| **Database** |  |
| **Authentication**|  |
| **AI** |  |
## 📸 Screenshots
| Landing Page | User Dashboard | Public Profile Page |
| ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
|
|
|
|
## 🚀 Getting Started
Follow these instructions to set up the project on your local machine.
### Prerequisites
- [Node.js](https://nodejs.org/) (v18 or later)
- [npm](https://www.npmjs.com/) or [yarn](https://yarnpkg.com/)
- A **[MongoDB](https://www.mongodb.com/)** account and a database cluster.
- A **[Google AI](https://aistudio.google.com/)** account to get a Gemini API key.
### 1. Configure Environment Variables
This project requires several environment variables to function correctly.
1. Create a file named `.env.local` in the root of your project.
2. Add the following variables, replacing the placeholder values with your own keys and secrets:
```env
# MongoDB Connection String
# Get this from your MongoDB Atlas cluster
MONGODB_URI="your_mongodb_cluster_uri"
# NextAuth Secret
# Generate a secret by running: openssl rand -base64 32
NEXTAUTH_SECRET="your_nextauth_secret"
# Google Gemini API Key
# Get this from Google AI Studio
GEMINI_API_KEY="your_gemini_api_key"
# Email for sending notifications (using a service like Nodemailer)
# Use a Gmail "App Password" if using a Gmail account for security
MY_EMAIL="your_email@example.com"
MY_PASS="your_email_app_password"
```
**Notes on Environment Variables:**
* **`NEXTAUTH_SECRET`**: You can generate a suitable secret by running `openssl rand -base64 32` in your terminal.
* **`MY_EMAIL` / `MY_PASS`**: This is intended for an email service (like Nodemailer) to send messages. If you use Gmail, it's highly recommended to create an **[App Password](https://support.google.com/accounts/answer/185833)** instead of using your regular password.
### 2. Install and Run Locally
1. **Clone the repository:**
```bash
git clone [https://github.com/Leonardo1903/EchoVault.git](https://github.com/Leonardo1903/EchoVault.git)
```
2. **Navigate to the project directory:**
```bash
cd EchoVault
```
3. **Install dependencies:**
```bash
npm install
```
4. **Start the development server:**
```bash
npm run dev
```
5. Open [http://localhost:3000](http://localhost:3000) in your browser to see the application.
## 🌟 Key Learnings
This project was a deep dive into modern full-stack development with the Next.js ecosystem. Key takeaways include:
- Building a full-stack application from scratch with **Next.js App Router** and server components.
- Integrating **MongoDB** with Mongoose for robust data modeling and management.
- Creating a beautiful, responsive, and accessible UI with **TailwindCSS** and **ShadCN-UI**.
- Implementing secure, credential-based authentication using **NextAuth.js**.
- Leveraging the **Google Generative AI (Gemini)** API to add intelligent, value-added features.
## 🤝 Contributing
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
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
## 📄 License
This project is licensed under the MIT License. See the [LICENSE.md](https://choosealicense.com/licenses/mit/) file for details.