Skip to content

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 πŸ‘₯.

Notifications You must be signed in to change notification settings

yaseen-kc/Rememberly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

35 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“š Rememberly 🧠

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.

🌟 Features

  • πŸ” 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.

πŸ› οΈ Technologies Used

Frontend

  • βš›οΈ 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.

Backend

  • πŸš€ 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.

πŸš€ Getting Started

Prerequisites

  • Node.js (v18 or higher)
  • npm (v9 or higher)
  • MongoDB (running locally or a connection string to a remote instance)

Installation

  1. Clone the repository

    git clone https://github.com/yaseen-kc/Rememberly.git
    cd Rememberly
  2. Install dependencies

    Navigate to both the backend and frontend directories and install the required dependencies.

    cd backend
    npm install
    
    cd ../frontend
    npm install
  3. Set up environment variables

    Create a .env file in the backend directory with the following variables:

    MONGO_URL=mongodb://localhost:27017/rememberly
    JWT_SECRET=your_jwt_secret_key
  4. Run the backend server

    From the backend directory, start the server:

    npm run dev
  5. Run the frontend development server

    From the frontend directory, start the development server:

    npm run dev
  6. Access the application

    Open your browser and navigate to http://localhost:5173 to access the application.

πŸ“‘ API Endpoints

User Authentication

  • 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.
  • Sign In

    • POST /api/v1/signin
    • Request Body:
      {
        "username": "your_username",
        "password": "your_password"
      }
    • Response:
      {
        "token": "jwt_token"
      }

Content Management

  • Add Content

    • POST /api/v1/content
    • Request Body:
      {
        "type": "document" | "tweet" | "youtube" | "link",
        "link": "url",
        "title": "Title of doc/video",
        "tags": ["tag1", "tag2"]
      }
  • 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"]
          }
        ]
      }
  • Delete Content

    • DELETE /api/v1/content
    • Request Body:
      {
        "contentId": "1"
      }

Content Sharing

  • Generate Shareable Link

    • POST /api/v1/brain/share
    • Request Body:
      {
        "share": true
      }
    • Response:
      {
        "hash": "shareable_hash"
      }
  • 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"]
          }
        ]
      }

🀝 Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository.
  2. Create a new branch (git checkout -b feature/YourFeatureName).
  3. Commit your changes (git commit -m 'Add some feature').
  4. Push to the branch (git push origin feature/YourFeatureName).
  5. Open a pull request.

πŸ“œ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Vite for the fast development setup.
  • Tailwind CSS for the utility-first CSS framework.
  • Zod for schema validation.

πŸ“§ Contact

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. πŸŽ‰

About

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 πŸ‘₯.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published