MessageWall is a real-time event messaging platform that allows event organizers to create and manage interactive message walls for their events. Attendees can send messages, which appear in real-time on the event's message wall.
- π User authentication for organizers (register, login, logout)
- π Event creation and management
- π¬ Real-time messaging
- π‘οΈ Simple Message moderation for event organizers (delete)
- π Optional message approval system for events
- π± Responsive design for both desktop and mobile
- π₯ User roles (attendee and organizer)
- πͺ No login required for attendees to participate
- β Save favorite events (for registered users)
- π Reply to messages
- π Emoji support in messages
- π°οΈ Message cooldown system to prevent spam
- π View past & saved events
- πΌοΈ Event image upload and management
- π Grid and list view options for events
- π Real-time user count for active events
- π Event duration display
- π Easy event sharing functionality
- π Dark/Light mode support
- π Real-time polls for events
- π Spectator mode for fullscreen message viewing
- π Message reactions (thumbs up/down)
- π Automatic removal of ended events
- π Chat locking functionality
- π Poll history, presets and management
- π Localization with English and Finnish languages
- π Custom role management for organizers
- π Push notification system
- βοΈ React.js
- π§ React Router for navigation
- π Axios for API requests
- π Socket.io-client for real-time communication
- π¨ Tailwind CSS for styling
- πΌοΈ Lucide React for icons
- π Framer Motion for animations
- π React Hot Toast for notifications
- π i18next for localization
- π’ Node.js
- π Express.js
- π MongoDB with Mongoose
- π Socket.io for real-time communication
- π JWT for authentication
- π Multer for file uploads
- Node.js (v14 or later)
- MongoDB
To give yourself organizer/admin privileges:
- Access your MongoDB database
- Find the user document you created in the project
- Find your created account and change the role field to "organizer"
- Hide login and register icons
-
Clone the repository
git clone https://github.com/silentsysop/messagewall.git cd messagewall
-
Install dependencies for both frontend and backend
cd frontend && npm install cd ../backend && npm install
-
Create a
.env
file in the backend directory with the following content:MONGODB_URI=your_mongodb_connection_string JWT_SECRET=your_jwt_secret PORT=5000 FRONTEND_URL=http://localhost:3000 SOCKET_IO_PATH=/socket.io BASE_URL=/api
-
Create a
.env
file in the frontend directory with the following content:REACT_APP_BACKEND_URL=http://localhost:5000/api REACT_APP_SOCKET_URL=http://localhost:5000 REACT_APP_SOCKET_PATH=/socket.io REACT_APP_BASENAME=/ REACT_APP_ENABLE_LOGS=true
-
Start the backend server
cd backend && npm start
-
In a new terminal, start the frontend development server
cd frontend && npm start
-
Open your browser and navigate to
http://localhost:3000
-
If you want to run the project on your subdirectory for example
http://localhost:3000/messagewall
, start by editing your frontend.env
file like this:REACT_APP_BACKEND_URL=http://localhost:5000/messagewall/api REACT_APP_SOCKET_URL=http://localhost:5000 REACT_APP_SOCKET_PATH=/messagewall/socket.io REACT_APP_BASENAME=/messagewall REACT_APP_ENABLE_LOGS=true
-
Backend's
.env
file:MONGODB_URI=your_mongodb_connection_string JWT_SECRET=your_jwt_secret PORT=5000 FRONTEND_URL=http://localhost:3000 SOCKET_IO_PATH=/messagewall/socket.io BASE_URL=/messagewall/api
-
In your frontend package.json change/add the
homepage
on top of the name"homepage": "/messagewall",
-
Start the backend server
cd backend && npm start
-
In a new terminal, start the frontend development server
cd frontend && npm start
Repeat same steps 1-4 from development installation then:
- Build the frontend:
cd ../frontend && npm run build
-
Install serve and PM2 globally:
npm install -g serve pm2
-
Start the backend with PM2:
cd ../backend pm2 start server.js --name "messagewall-backend"
-
Start the frontend with PM2 (port = 3000):
cd ../frontend pm2 serve build 3000 --name "messagewall-frontend"
-
Check status and set up PM2 to start on system reboot:
pm2 list pm2 startup pm2 save
This project is licensed under the Apache License, Version 2.0 - see the LICENSE file for details.