Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pavlevujicic/webdevproject
Created a web application to provide exhibition space for artists, to showcase their work and connect artists with the community.
https://github.com/pavlevujicic/webdevproject
css express-js html http javascript json mongodb mvc-architecture nodejs pugjs restful-api
Last synced: 10 days ago
JSON representation
Created a web application to provide exhibition space for artists, to showcase their work and connect artists with the community.
- Host: GitHub
- URL: https://github.com/pavlevujicic/webdevproject
- Owner: PavleVujicic
- Created: 2023-12-21T20:56:30.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2023-12-21T21:46:59.000Z (11 months ago)
- Last Synced: 2024-10-18T01:34:52.757Z (29 days ago)
- Topics: css, express-js, html, http, javascript, json, mongodb, mvc-architecture, nodejs, pugjs, restful-api
- Language: JavaScript
- Homepage: https://youtu.be/nEee0bbDUXs
- Size: 46.9 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.txt
Awesome Lists containing this project
README
##information
Name: Pavle Vujicic
Project Name: “Open Gallery”
YouTube Link Demonstration: https://youtu.be/nEee0bbDUXs##Purpose
Create a web application to provide exhibition space for artists, to showcase their work and connect artists with the community.
The application maintains a database of art items and supports two types of users: patrons and artists.
Patrons can browse all the information on the site, add reviews and “likes” to artworks, “follow” artists and join workshops.
Artists can add new artwork or host a workshop. Artists and patrons are considered “users”; their accounts have different features.##List of Files
app.js
database-init.js
gallery.json
package.json
package-lock.jsonpublic/
css.stylesmodels/
artwork.js
user.js
workshop.jsviews/
account.pug
add-artwork-promtp.pug
add-workshop.pug
artist-profile.pug
artwork.pug
following.pug
header.pug
login.pug
notifications.pug
register.pug
search.pug
add-artwork.pug
enrollSuccess.pug
workshopDetails.pugroutes/
artwork.js
user.js
workshop.js
artists.jscontrollers/
artistController.js
artworkController.js
userController.js
workshopController.jsmiddleware/
auth.js##Installation and Initialization
Prerequisites:
Node.js and npm:Node:
Ensure Node.js and npm are installed on your machine.MongoDB:
Install MongoDB on your machine if not already installed.Installation Steps:
Unzip zip file
cd a5
Install Dependencies:
npm install
Database Initialization:
Ensure that your MongoDB server is running.
Run the initialization script to populate the database with artwork data:node database-init.js
##Run the Application
npm start
##Access the Application
Open your web browser and go to http://localhost:3000
##Overall Design of the Web Application
The overall design of the web application prioritizes scalability, responsiveness, and maintainability.
Architectural choices, such as adopting the MVC pattern and asynchronous programming, contribute to the success of the project.
The inclusion of extra functionality enhances user engagement and provides a more dynamic user experience.
The design decisions aim to strike a balance between simplicity, security, and user satisfaction.
The web application follows an effective use of RESTful design principles, use of proper HTTP status codes, error handling, traditional Model-View-Controller (MVC) architecture, utilizing the Express.js framework for the backend and Pug for the frontend (view).
MongoDB is used as the database to store user data, artwork information, and other relevant data.##Design decisions
The design decision made for this project was the use of MVC.
Model-view-Controller as an intermediary between the model and the view, facilitating communication and delivering functionality and responses.
When an end user initiates a request, the controller, intricately connected to the database, intercepts, and processes the submission.
There are many advantages of using MVC for the RESTFUL API. Those advantages are separations of concerns, using MVC separates the application's three components, making the code easier to read and a lot more organized.
It creates better testability, when trying to debug or find a mistake in the code, it is a lot easier to find it.
MVC improves scalability, Implementing the MVC architecture in the Express.js framework for a RESTful API enables seamless horizontal scalability, allowing the application to efficiently expand by incorporating additional servers.
And finally, The MVC architecture offers considerable flexibility in designing and developing applications. Developers have the freedom to select various frameworks and libraries for each component based on their specific requirements and preferences.
Here is a link for information on MVC: https://www.scaler.com/topics/expressjs-tutorial/creating-mvc-architecture-for-restful-api/?fbclid=IwAR3zW5ucB_SughEZNzkeWlKzEZWo6vmN_5HbMiTrENdj6NZthp2xUhYJuOc##Conclusion
In conclusion, the web application emerges as a dynamic hub uniting artists and patrons in a vibrant online community.
With a database housing a diverse array of artworks, the platform caters to patrons by providing an engaging space for exploration, interaction, and workshop participation.
Simultaneously, artists benefit from specialized features, enabling them to showcase their creations and host workshops.
The application, designed with distinct functionalities for artists and patrons, succeeds in fostering a collaborative and inclusive digital environment, democratizing art and strengthening connections within the artistic community.