UrWall is a campus wall web application originally built for UIUC, where students can post messages and interact within a campus-wide feed.
This project was developed quickly with the help of AI-generated code, so it should be treated as a prototype / starter template, not a production-ready system.
The main goal of this repository is to serve as a forkable template that can be easily adapted for other universities.
Frontend (Vercel):
👉 https://urwall.vercel.app
UrWall consists of two parts:
frontend/ — Next.js + React (UI) backend/ — Node.js + Express + PostgreSQL (API & Auth)
Core features:
- Campus-wide anonymous message wall
- Email-based verification
- JWT-based authentication
- Simple, extensible backend design

Note that for testing purposes, this site includes Chinese character, 因为我是中国人
git clone https://github.com/cyh-2101/urwall.git
cd urwallcd backend
npm installCreate a .env file inside the backend/ directory:
DB_HOST=localhost
DB_PORT=5432
DB_NAME=campus_wall
DB_USER=postgres
DB_PASSWORD=your_db_password
JWT_SECRET=your_jwt_secret
EMAIL_SERVICE=gmail
EMAIL_USER=your_email@gmail.com
EMAIL_PASSWORD=your_gmail_app_password.env files to GitHub.
npm run devBackend runs on your configured port (e.g. http://localhost:3001).
cd ../frontend
npm install
npm run devFrontend runs on:
http://localhost:3000
This project uses Gmail SMTP with Google App Passwords to send verification emails.
Google does not allow normal Gmail passwords for programmatic access.
-
Enable 2-Step Verification on your Google account https://myaccount.google.com/security
-
Generate an App Password https://myaccount.google.com/apppasswords
- App: Mail
- Device: Other
-
Copy the generated 16-character password
-
Set it in
.env:
EMAIL_USER=your_email@gmail.com
EMAIL_PASSWORD=your_16_char_app_passwordEach fork must generate its own App Password.
The frontend is deployed using Vercel.
Steps:
- Go to https://vercel.com
- Log in using your GitHub account
- Import your forked repository
- Select the
frontend/directory as the project root - Configure environment variables if needed
- Click Deploy
Vercel automatically redeploys on every push.
The backend is deployed using Railway.
Steps:
-
Go to https://railway.app
-
Log in using your GitHub account
-
Create a new project → Deploy from GitHub repository
-
Select the repository and set root directory to
backend/ -
Add environment variables in Railway dashboard:
- DB_HOST
- DB_PORT
- DB_NAME
- DB_USER
- DB_PASSWORD
- JWT_SECRET
- EMAIL_USER
- EMAIL_PASSWORD
-
Deploy
Railway automatically builds and restarts the backend on updates.
This repository is designed to be easily forked and adapted.
To create a campus wall for another school:
- Fork this repository
- Update frontend branding (school name, UI text, colors)
- Adjust email rules if needed (e.g. domain restrictions)
- Configure your own database and email credentials
- Deploy frontend (Vercel) and backend (Railway)
Each fork should use its own credentials and database.
- This project was built rapidly with AI assistance
- Code quality and security have not been production-hardened
- Review authentication, rate limiting, and input validation before real-world use
MIT License
Issues and pull requests are welcome, especially improvements in:
- Security
- UI/UX
- Moderation tools
- Performance