Skip to content

IvannaZimina/Photo-Gallery-Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Task

Create web-app for photographers.

Stack

Backend:

JavaScript, Node.js, Express.js, REST API, JWT, JSON validation, AJAX, WayForPay API, MongoDB.

Libraries:

Mongoose, AJV, crypto, jsonwebtoken, deep-freeze, multer for images.

Frontend:

JavaScript, EJS, localStorage, Sass (SCSS), Materialize library.

Description

Backend

A web-app was created with Node.js application (via express-generator) using MVC. The next modules were created:

  • Server module: contains main app file with base configurations of application and connection to DB;
  • Configuration module: contains configuration of PORT, WayForPay, deepfreeze;
  • Model module: contains models of DB entities in MongoDB - users, albums, orders;
  • Controller module: functions of interaction with the DB entities (CRUD), access & refresh tokens (JWT) for users using private and public keys, WayForPay configurations using test data;
  • Routes module: built REST API architecture using POST and GET methods, made middleware to check if a user is logged in by access token to enter a personal page.
  • Schemas module: contains JSON validation schemes for validate the data from front.

Frontend

Web-pages generated with EJS template maker, localStorage for JWT, own styles by Sass (SCSS) and Materialize library:

  • a page with registration and login forms for users on separate link;
  • a page with the personal space. It contains the following functional options (on separates links):
  1. edit profile: to edit personal information on profile page;
  2. albums: create/delete albums, create link for buyers;
  3. images page in albums: add photos using separate inputs form, delete photos using checkbox form;
  4. orders: review orders and their status;
  5. log out of personal cabinet.
  • buyer’s page without JWT: using checkbox form and making an order using WayForPay technology with testing parameters to make payment.

Environment

Clone project to your machine. Use npm install to add all dependencies in project and open web-app.

View

Log in page

image

Registration page

image

Profile page

image

Albums page

image

Orders page

image

User buying page

image image

About

Full‑stack photo gallery app with user authentication (JWT), albums, image upload, orders, and WayForPay integration. Built with Node.js/Express, MongoDB, EJS, and SCSS.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors