Rememberly is a full-stack application designed to help users manage and organize their digital content, such as documents, tweets, YouTube videos, and links. The application provides features for user authentication, content management, and sharing content with others.
- π User Authentication: Sign up and sign in with secure password validation.
- π Content Management: Add, view, and delete content (documents, tweets, YouTube videos, links).
- π Content Sharing: Generate shareable links to allow others to view your content.
- π± Responsive UI: Built with React and Tailwind CSS for a modern and responsive user interface.
- βοΈ React: A JavaScript library for building user interfaces.
- π TypeScript: A typed superset of JavaScript that compiles to plain JavaScript.
- π¨ Tailwind CSS: A utility-first CSS framework for rapidly building custom user interfaces.
- β‘ Vite: A fast build tool for modern web projects.
- π£οΈ React Router: A library for routing in React applications.
- π Express.js: A web application framework for Node.js.
- ποΈ MongoDB: A NoSQL database for storing user and content data.
- π Mongoose: An ODM (Object Data Modeling) library for MongoDB and Node.js.
- π JSON Web Tokens (JWT): A standard for securely transmitting information between parties as a JSON object.
- π Zod: A TypeScript-first schema validation library.
- Node.js (v18 or higher)
- npm (v9 or higher)
- MongoDB (running locally or a connection string to a remote instance)
-
Clone the repository
git clone https://github.com/yaseen-kc/Rememberly.git cd Rememberly
-
Install dependencies
Navigate to both the
backend
andfrontend
directories and install the required dependencies.cd backend npm install cd ../frontend npm install
-
Set up environment variables
Create a
.env
file in thebackend
directory with the following variables:MONGO_URL=mongodb://localhost:27017/rememberly JWT_SECRET=your_jwt_secret_key
-
Run the backend server
From the
backend
directory, start the server:npm run dev
-
Run the frontend development server
From the
frontend
directory, start the development server:npm run dev
-
Access the application
Open your browser and navigate to
http://localhost:5173
to access the application.
-
Sign Up
- POST
/api/v1/signup
- Request Body:
{ "username": "your_username", "password": "your_password" }
- Constraints:
- Username: 3-20 characters
- Password: 8-20 characters, at least one uppercase, one lowercase, one number, and one special character.
- POST
-
Sign In
- POST
/api/v1/signin
- Request Body:
{ "username": "your_username", "password": "your_password" }
- Response:
{ "token": "jwt_token" }
- POST
-
Add Content
- POST
/api/v1/content
- Request Body:
{ "type": "document" | "tweet" | "youtube" | "link", "link": "url", "title": "Title of doc/video", "tags": ["tag1", "tag2"] }
- POST
-
Fetch All Content
- GET
/api/v1/content
- Response:
{ "content": [ { "id": 1, "type": "document" | "tweet" | "youtube" | "link", "link": "url", "title": "Title of doc/video", "tags": ["tag1", "tag2"] } ] }
- GET
-
Delete Content
- DELETE
/api/v1/content
- Request Body:
{ "contentId": "1" }
- DELETE
-
Generate Shareable Link
- POST
/api/v1/brain/share
- Request Body:
{ "share": true }
- Response:
{ "hash": "shareable_hash" }
- POST
-
View Shared Content
- GET
/api/v1/brain/:shareLink
- Response:
{ "username": "shared_user_username", "content": [ { "id": 1, "type": "document" | "tweet" | "youtube" | "link", "link": "url", "title": "Title of doc/video", "tags": ["tag1", "tag2"] } ] }
- GET
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a new branch (
git checkout -b feature/YourFeatureName
). - Commit your changes (
git commit -m 'Add some feature'
). - Push to the branch (
git push origin feature/YourFeatureName
). - Open a pull request.
This project is licensed under the MIT License - see the LICENSE file for details.
- Vite for the fast development setup.
- Tailwind CSS for the utility-first CSS framework.
- Zod for schema validation.
For any questions or feedback, please reach out to Yaseen KC.
Thank you for using Rememberly! We hope it helps you organize and share your digital content effectively. π