An awesome photo streaming platform for photographers and photo enthusiasts!
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
Table of Contents
PixelStream is a photo streaming platform for photographers and photo enthusiasts. It allows users to upload, share, and view photos from around the world. The platform provides a simple and intuitive interface for users to interact with the photos and photographers they love. Also, it provides a platform for photographers to showcase their work and connect with other photographers, so they can learn and grow together.
- Photo Uploading: Easily upload images along with relevant information such as properties, camera specifications, and tags.
- Collection Management: Customize and manage collections, include related photos, and edit collection properties.
- Profile Management: Showcase your work to the public and connect with other users through profile management. folow other users and get followed by other users. Also tracked the liked photos and downloaded photos.
- Content Searching: advanced searching capabilities for photos, collections, and users using tags and properties.
- Unique UI: Experience a unique user interface with a dynamic background and a modern dark color theme for a seamless user experience.
- Photo Management: manage your photos by editing their properties, adding tags, and viewing their statistics.
- Engagement Featured: Easily manage your photos by expressing your preferences through liking or disliking, and download them for convenient access. Leave comments to provide feedback and engage with others.
- Statistics Tracking: Track the statistics of your photos, collections, and user profile to understand your audience and improve your content.
PixelStream is a web-based application that operates its user interface directly in the browser. Its server-side backend is constructed entirely with Node.js and Express.js, which provides a RESTful API for the frontend to consume. The frontend, on the other hand, is built with React.js and employs the React Context API for efficient state management. Additionally, the application uses Vanilla CSS for styling and is designed as a single-page application (SPA) that relies on React Router for navigation. Redis is used as a http cache between the backend and the frontend to improve the performance of the application.
- Backend and API: Node.js with Express
- Database: MySQL
- Cache: Redis
- Frontend: React with Vanilla CSS
To get a local copy up and running follow these simple steps.
Make sure you have the following installed on your machine:
- Node.js
- NPM package manager
npm install npm@latest -g
- MySQL
- Vite (for the frontend)
Also you want to have an Azure Blob Storage account to store the images uploaded by the users. if you don't have an Azure account you can create a free account here
if you want to use the new relic monitoring you can create a new relic account and get the license key and app name. New Relic
To get a local copy up and running follow these simple steps.
-
Clone the repo
git clone https://github.com/ShavinAnjithaAlpha/PhotoShav
-
Install NPM packages for the frontend
cd client npm install
-
Install NPM packages for the backend
cd server npm install
-
Setup the Azure blob storage account
create an azure blob storage account and get the nessasary credentials and urls mentioned in the
.env.axample
file -
Create the
.env
file for the serveruse the template procide in the
.env.example
file and create a new.env
file in theserver
folder. Update the values with the actual values.PORT={PORT} NODE_ENV={node environment mode} AZURE_CONNECTION_STRING={azure connection string} BLOB_CONTAINER_NAME={blob container name} AZURE_STORAGE_ACCOUNT={azure storage account} NEW_RELIC_APP_NAME={new relic app name} // optional NEW_RELIC_LICENSE_KEY={new relic license key} // optional REDIS_URL={redis url} // database configurations (ldevelopment database) MYSQL_HOST={database hostname} MYSQL_USER={database username} MYSQL_PASSWORD={database password} MYSQL_DATABASE={database name} // default: pixelstream MYSQL_PORT={database port} // default: 3306 // optional (only if you use a production database) MYSQL_HOST_PROD={production database hostname} MYSQL_USER_PROD={production database username} MYSQL_PASSWORD_PROD={production database password} MYSQL_DATABASE_PROD={production database name} // default: pixelstream MYSQL_PORT_PROD={production database port} // default: 3306
Note: The
NEW_RELIC_APP_NAME
andNEW_RELIC_LICENSE_KEY
are optional. If you want to use the new relic monitoring you can add these values to the.env
file. Also, production database confogurations are optional, only use if you have a production database. -
Create the
.env
file for the frontend -
use the template procide in the
.env.example
file and create a new.env
file in theclient
folder. Update the values with the actual values.VITE_PORT={PORT} VITE_APP_API_URL={backend api url} VITE_LOCATION_API_URL={geoapify api url} VITE_LOCATION_API_KEY={geoapify api key}
Note: The
VITE_REDIS_URL
is optional. If you want to use the redis cache you can add this value to the.env
file. -
Start the backend server
cd server npm start
-
Run the frontend server
cd client npm start
If you want to run the server and client at the same time you can use the following command
npm run dev
Here are some screenshots of the PixelStream Web platform:
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- 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
Distributed under the MIT License. See LICENSE.txt
for more information.
-
Shavin Anjitha ([email protected]) (LinkedIn) (Portfolio)
-
Project Link: https://github.com/ShavinAnjithaAlpha/PixelStream