Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/bestbynature/photo-fortress

The "Photo Fortress" GitHub repository is a secure image upload and retrieval application built using TypeScript and MongoDB. This repository contains endpoints for uploading images (/upload) and retrieving images (/get_image) securely.
https://github.com/bestbynature/photo-fortress

es6-modules mocha mongodb mongoose nodejs typescript

Last synced: 3 days ago
JSON representation

The "Photo Fortress" GitHub repository is a secure image upload and retrieval application built using TypeScript and MongoDB. This repository contains endpoints for uploading images (/upload) and retrieving images (/get_image) securely.

Awesome Lists containing this project

README

        

# 📗 Table of Contents
- [📗 Table of Contents](#-table-of-contents)
- [📖 Photo Fortress App](#-Photo-Fortress-App)
- [🛠 Built With ](#-built-with-)
- [Tech Stack ](#tech-stack-)
- [Key Features ](#key-features-)
- [Live Demo](#live-demo)
- [💻 Getting Started ](#-getting-started-)
- [Prerequisites](#prerequisites)
- [Setup](#setup)
- [Usage](#usage)
- [Api Documentation](#api-documentation)
- [To start the development server](#to-start-the-development-server)
- [👥 Author ](#-author-)
- [🔭 Future Features ](#-future-features-)
- [🤝 Contributing ](#-contributing-)
- [⭐️ Show your support ](#️-show-your-support-)
- [🙏 Acknowledgments ](#-acknowledgments-)
- [📝 License ](#-license-)


# 📖 Photo Fortress App

The "Photo Fortress" GitHub repository is a secure image upload and retrieval application built using TypeScript and MongoDB. This repository contains endpoints for uploading images (/upload) and retrieving images (/get_image) securely. It includes validation checks to ensure only image files are accepted for upload, with informative error messages provided for invalid file types. Error handling is implemented to address various issues, such as invalid credentials or database errors. The repository also includes documentation explaining how to use the API endpoints, including details on required request parameters and response formats. With features for storing images securely and efficiently, "Photo Fortress" offers a robust solution for managing and accessing image assets in web applications.

## 🛠 Built With

### Tech Stack

Project languages and Libraries


  • TypeScript

  • JavaScript

FrameWork


  • Node.js

  • Express.js

  • Dotenv

  • multer

DataBase


  • MongoDB

  • Mongoose

### Key Features

- [x] Secure image upload endpoint ('/upload')
- [x] Secure image retrieval endpoint ('/get_image')
- [x] Validation checks for image file types
- [x] Error handling for invalid credentials and database errors
- [x] Documentation for API endpoints ('/api/docs')

### Live Demo

[Please check back for the hosted version](#). The video demonstration is given below:

# [Photo_Fortress_App_Demonstration.mp4](https://drive.google.com/file/d/1LFj3T5j9kyXrdPIWlK3YrjBbdQF9Zdu6/view?usp=sharing)

(back to top)

## 💻 Getting Started

To get a local copy up and running, follow these steps.

### Setup

for cloning follow this steps
- go to the green `code` button at the top left of this Repository
- copy either `SSH` or `https` link depending on your preference and the previous setup you've made on your system
- open your terminal and navigate into your desired folder
- Then run `git clone ` command
- or just download `ZIP` file
- Create `.env` file in root directory and add your database connection string as `MONGO_URI` and your port number as `PORT`
- Then run `yarn install` or `npm install` to install all dependencies

### Usage
To run the project, execute the following command:

- [x] `npm run dev` or `yarn dev` to start the development server
- [x] A message should display on the terminal saying `connected to database` if the connection is successful.
- [x] Another message should be at the terminal saying `Server running on port 3000 or the port you specified in the .env file`
- [x] Open your browser and navigate to `http://localhost:3000` to access the application.
- [x] You can now upload and retrieve images using the API endpoints provided in the documentation.
- [x] Click the get all Ids button to get a list of all the ids of the images you have uploaded and paste the id in the get image by id input field to get the image.
- [x] To upload an image, click the choose file button and select an image file from your local machine. Then click the upload button to submit the image.

(back to top)

### Api Documentation

- [x] The API documentation is available at [Api Documentation](./documentation/api-documentation.md) and provides comprehensive information on how to interact with the API endpoints to upload and retrieve images.

## 👥 Author

👤 Author: Damilare

- GitHub: [@githubhandle](https://github.com/Bestbynature)
- Twitter: [@twitterhandle](https://twitter.com/Dammybest)
- LinkedIn: [LinkedIn](https://www.linkedin.com/in/damilareismailabestbynature/)

## 🔭 Future Features

- [x] Add user authentication
- [x] Implement image resizing and compression
- [x] Add support for additional file types (e.g., PDFs, videos)
- [x] Implement image search functionality
- [x] Add support for image metadata (e.g., tags, descriptions)
- [x] Implement image sharing and collaboration features
- [x] Add support for image editing (e.g., cropping, filters)
- [x] Implement image categorization and organization features
- [x] Add support for image galleries and albums
- [x] Implement image versioning and rollback features
- [x] Add support for image annotations and comments

(back to top)

## 🤝 Contributing

Contributions, issues, and feature requests are welcome!

Feel free to check the [issues page](../../issues/).

(back to top)

## ⭐️ Show your support

If you like this project please give it a star or [buy me a coffee](https://www.buymeacoffee.com/dammylare) to show your support!

(back to top)

## 🙏 Acknowledgments

I appreciate [Tobams Group](https://tobamsgroup.com) for providing the inspiration for this work.

(back to top)

## 📝 License

This project is [MIT](./LICENSE) licensed.

(back to top)