Application to view memes posted by the community of users, where users can:
- upload memes with valid url and caption.
- view list of memes posted by others.
- can edit memes displayed.
- Note: Memes are displayed in last posted one first.
MERN stack application.
- MongoDB
- ExpressJS
- ReactJS
- NodeJS
- Axios
- Ant-design
- Swagger-ui
- Cors
- Dotenv
- There are two main folders, namely
backend
&frontend
where the code for backend and frontend resides respectively.
- You should have
node
installed on your machine. - For database, you can either use mongoDB atlas which is cloud db or use your local db server using mongoDB compass.
- Clone the repository.
- After cloning the repo, switch to
backend
folder using:cd backend
- Now run
npm install
to install the backend dependencies. - After installing dependencies, run
npm run server
to start the server which should load here. - Go back to the root of the repo, and switch to
frontend
folder using:cd frontend
- Now run
npm install
to install the frontend dependencies. - After installing dependencies, run
npm start
to start the UI which should load here.
- Go to the root of the repo and run below commands in given order from your terminal:
chmod +x install.sh
sudo ./install.sh
- After above step your server will be up and running here.
- Now from root of the repo switch to
frontend
folder using:cd frontend
- Now run
npm install
to install the frontend dependencies. - After installing dependencies, run
npm start
to start the UI which should load here.
- In order to run this project using local db you should have MongoDBCompass installed.
- In order to connect to local mongoDB database you need to replace the mongoDB URI inside
backend\config\keys.js
to'mongodb://127.0.0.1:27017/Xmeme'
(including single quotes) whereXmeme
is the db name. You can use your choice of db name.
- You can use the swagger-ui to experiment with the api's used in this project.
- Accessing swagger-ui:
- If running in local Swagger-local.
- If you want to see deployed one Swagger-public.
- I am always an linkedin ping away for the feedbacks to improve this further or add new functionalities or discussing new ideas (not regarding this project in particular).