- Frontend: HTML, CSS, JS, Bootstrap
- Backend: Node.js, Express.js, MongodDB.
- Dependencies:
- Express(Routing),
- Mongoose(Mongodb Modeling, Queries),
- CORS(Cross-origin resource sharing),
- JOI(Schema Validation),
- dotenv(env var),
- body-parser(for body parsing),
- SwaggerJsDoc(Generating swagger docs based on js doc),
- Swagger-UI(UI for swagger docs)
NOTE: Swaggger API Documentation is available on same port as backend server.
Full Stack Web Application Architecture
-
Users can Post Memes by providing these inputs:
- Name of Owner
- Caption for Meme
- Image URL
-
Users can see Memes posted by everyone
-
Users can edit Memes posted by anyone (Not allowed to edit owner name)
-
Fully Responsive Website with Mobile First Approach
-
Dockersied Solution is available
-
Swagger API Documentation.
-
Proper HTTP status codes
-
Validation at both Frontend and Backend and lets user know about it.
-
Only allows images URL that is valid url and also ends with supported image format by MIME.
Note: If you have node and mongodb installed on your device then head on to Step 2.
-
Run the install.sh bash script to install the nodejs and mongodb for backend.
sh install.sh
-
Run server_run.sh and you are good to go.(you can change env variable from here if you wish to run it in other ways,)
sh server_run.sh
-
Create the container Image
docker build -t your_app_name .
-
Run the container
docker run -d --net="host" xmeme_app
Frontend can be used via index.html in frontend.
Swagger docs are available on same port as of backend.
-
Add Authentication.
-
User Profile.
-
Share Posts.
-
Download Memes.
-
Comments and Like Option.
-
Add different categories for different meme type(channels or something).