trafficstars


ShutterSync
ShutterSync aims to address the need for professional photographers to efficiently share and collaborate on their work with clients, enhancing client engagement and project management.
Documentation
Documentation
Documentation & Testing
You will need an API_KEY for production server.
Features
- Lightweight image assets for display and you get to keep your original files
- Light/dark mode toggle
- Responsive design
- User authentication
- User authorization
- User profile management
- Album management
- Photo management
- Photo sharing
Tech Stack
Client: React, TypeScript, Chakra UI, Framermotion
Server: Node, Express, JavaScript, MongoDB, Cloudinary, Multer
Testing: Jest, React Testing Library, Supertest
Deployment: Heroku, Google Cloud Platform, Vercel
Installation
Run locally. Git clone first.
npm install ShutterSync
cd ShutterSync
You will need a Mongo DB setup if you want to run it with your DB.
Environment Variables
To run this project, you will need to add the following environment variables to your .env file
API_KEY
DB_URI
DB_URI
PORT
CLOUDINARY_API_KEY
MAIL_HOST
MAIL_PORT
MAIL_USER
MAIL_PWD
MAIL_DOMAIN
GOOGLE_PROJECT_ID
GOOGLE_PRIVATE_KEY_ID
GOOGLE_PRIVATE_KEY
GOOGLE_CLIENT_EMAIL
CI Tests

API References
Include a 'x-api-key' header with your API_KEY in all requests
Sign up
POST /api/auth/signup
| Parameter |
Type |
Description |
email |
string |
Required. Your email |
name |
string |
Required. Your name |
password |
string |
Required. Your password |
Sign in
POST /api/auth/signin
| Parameter |
Type |
Description |
email |
string |
Required. Your email |
password |
string |
Required. Your password |
Sign out
GET /api/auth/signout
Get user
GET /api/users/${id}
| Parameter |
Type |
Description |
id |
string |
Required. Id of user to fetch |
Update user
PUT /api/users/${id}
| Parameter |
Type |
Description |
id |
string |
Required. Id of user to update |
name |
string |
Required. Your name |
email |
string |
Required. Your email |
password |
string |
Required. Your password |
Delete user
DELETE /api/users/${id}
| Parameter |
Type |
Description |
id |
string |
Required. Id of user to delete |
Create an album
POST /api/users/${userid}/albums
| Parameter |
Type |
Description |
userid |
string |
Required. Id of user |
name |
string |
Required. Name of album |
Get an album
GET /api/users/${userid}/albums/${albumid}
| Parameter |
Type |
Description |
userid |
string |
Required. Id of user |
albumid |
string |
Required. Id of album |
Update an album
PUT /api/users/${userid}/albums/${albumid}
| Parameter |
Type |
Description |
userid |
string |
Required. Id of user |
albumid |
string |
Required. Id of album |
name |
string |
Required. Name of album |
Delete an album
DELETE /api/users/${userid}/albums/${albumid}
| Parameter |
Type |
Description |
userid |
string |
Required. Id of user |
albumid |
string |
Required. Id of album |
Get all albums
GET /api/users/${userid}/albums
| Parameter |
Type |
Description |
userid |
string |
Required. Id of user |
Create a photo
POST /api/users/${userid}/albums/${albumid}/photo
| Parameter |
Type |
Description |
userid |
string |
Required. Id of user |
albumid |
string |
Required. Id of album |
file |
binary |
Required. Name of photo |
Get a photo
GET /api/photos/${photoid}
| Parameter |
Type |
Description |
photoid |
string |
Required. Id of photo |
Update a photo
PUT /api/photos/${photoid}
| Parameter |
Type |
Description |
photoid |
string |
Required. Id of photo |
Delete a photo
DELETE /api/photos/${photoid}
| Parameter |
Type |
Description |
photoid |
string |
Required. Id of photo |
Get all photos
GET /api/users/${userid}/albums/${albumid}/photos
| Parameter |
Type |
Description |
userid |
string |
Required. Id of user |
albumid |
string |
Required. Id of album |
Authors