A modern, real-time digital message board application built with Next.js, React, and Prisma. This project allows users to post messages with images on customizable digital boards with different themes and layouts, featuring real-time updates and admin moderation.
π View Live Demo
π§ Admin Panel (Demo purposes)
- Multiple Board Layouts: Flying messages, Post-it styles, themed layouts including New Year themes
- Real-time Updates: WebSocket-powered live message display
- Admin Moderation: Approve/reject messages before they appear on boards
- File Uploads: Support for images with messages (JPEG, PNG, GIF, WebP)
- Responsive Design: Fully responsive design that works on all devices
- Customizable Themes: Multiple board backgrounds, colors, fonts, and background music
- Board Management: Create and manage multiple message boards with different themes
- User-friendly Interface: Clean, modern UI built with Tailwind CSS and Shadcn/ui
- Framework: Next.js 15 with App Router
- Language: TypeScript
- Database: SQLite (development) / PostgreSQL (production) with Prisma ORM
- Styling: Tailwind CSS
- UI Components: Shadcn/ui components
- Authentication: NextAuth.js (for admin panel)
- Real-time: WebSockets (Socket.IO)
- File Handling: Next.js built-in file upload handling
- Node.js 18.0 or higher
- npm, yarn, or pnpm package manager
- Database (SQLite for development, PostgreSQL recommended for production)
git clone https://github.com/present42/message-wall.git
cd message-wallnpm install
# or
yarn install
# or
pnpm installcp .env.example .envEdit the .env file with your configuration:
# Database Configuration
DATABASE_URL="file:./dev.db"
# NextAuth.js Configuration
NEXTAUTH_SECRET="your-secure-secret-here"
NEXTAUTH_URL="http://localhost:3000"# Generate Prisma client
npx prisma generate
# Run database migrations
npx prisma migrate dev
# (Optional) Seed the database with sample data
npx prisma db seednpm run dev
# or
yarn dev
# or
pnpm devOpen http://localhost:3000 with your browser to see the application.
The project uses SQLite by default for development. No additional setup required.
For production, update your .env file:
DATABASE_URL="postgresql://username:password@localhost:5432/message_wall"Then run the migrations:
npx prisma migrate deploy- Access the admin panel at
/admin/login - Default credentials are created during database setup
- Use the admin panel to:
- Approve/reject pending messages
- Manage boards and themes
- Configure board settings
- Monitor user submissions
The application supports multiple board layout types:
- Flying Messages: Messages that float and move across the screen
- Post-it Style: Static message cards arranged in a grid
- New Year Theme: Special themed boards for celebrations
Each board can be customized with:
- Background colors and images
- Font families and colors
- Background music
- Custom post colors
- Background videos
src/
βββ app/ # Next.js App Router pages
β βββ (admin)/ # Admin panel routes
β βββ api/ # API endpoints
β βββ board/ # Public board pages
βββ components/ # React components
β βββ ui/ # Shadcn/ui components
β βββ admin/ # Admin-specific components
β βββ board/ # Board layout components
βββ lib/ # Utility functions
βββ types/ # TypeScript type definitions
βββ hooks/ # Custom React hooks
prisma/ # Database schema and migrations
public/ # Static assets
βββ audios/ # Background music files
βββ images/ # Static images
βββ videos/ # Background video files
β οΈ Important: This application uses WebSocket for real-time messaging, which requires a persistent server connection. It cannot be deployed on serverless platforms like Vercel or Netlify.
Most flexible option with full control:
- Set up Linux server (Ubuntu/CentOS)
- Install Node.js 18+, PostgreSQL, PM2
- Deploy with reverse proxy (Nginx/Caddy)
- Cost: $5-50/month depending on resources
Managed container deployment:
# Build the Docker image
docker build -t message-wall .
# Deploy to platform of choice- Railway: Great for Node.js apps, built-in PostgreSQL
- Render.com: Free tier available, automatic SSL
- Cost: $0-25/month
# Build the application
npm run build
# Start with PM2 for production
npm install -g pm2
pm2 start ecosystem.config.jsThese platforms use serverless functions that:
- Cannot maintain persistent WebSocket connections
- Have execution time limits (10-60 seconds)
- Restart frequently, breaking Socket.IO connections
For detailed deployment guides, see our deployment documentation.
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Create an issue for bug reports or feature requests
- Check out our documentation for more detailed guides
- Join our community discussions
- Built with Next.js
- UI components from Shadcn/ui
- Database ORM by Prisma
- Styling with Tailwind CSS
Happy messaging! π¬β¨