Full-stack social app with profiles, media posts, messaging, and notifications, built with React, Express, and Prisma.
Chorus is a full-stack social media app inspired by modern short-form social networks. Users can create accounts, customize their profile picture, publish text/photo/video posts, follow people, comment, like, repost, bookmark, receive notifications, and send direct messages.
- Create accounts and customize profiles and avatars.
- Publish text, photo, and video posts.
- Follow users and like, comment, repost, or bookmark posts.
- Receive notifications and exchange direct messages.
- Explore seeded local demo accounts and content.
Source-generated UI preview, not an actual application screenshot. Reconstructed from the UI markup, original stylesheet, and Lucide icons; shows the desktop home interface in its empty-feed state with the documented demo identity and initials avatar.
JavaScript, React, Vite, Node.js, Express, Prisma, SQLite, JWT, and bcrypt.
Use Node.js 22.12+ (the current Vite frontend requires a newer Node.js than the root package minimum).
- Download or clone the source repository.
- Open VS Code.
- Select File → Open Folder and choose the folder containing the root
package.json. - Open Terminal → New Terminal.
- Run:
npm.cmd run setup
npm.cmd run dev- Open
http://localhost:5173.
The setup command installs dependencies, creates the local environment file if missing, resets the SQLite database, and adds demo content. Run setup only for a fresh local database or after backing up existing data: its db:setup command uses prisma db push --force-reset. For an already initialized workspace, use npm.cmd run dev.
Every seeded account uses the password chorus123:
| Name | Username | |
|---|---|---|
| Alex Morgan | demo@chorus.local |
alexmorgan |
| Lena Ortiz | lena@chorus.local |
lenaortiz |
| Marcus Lee | marcus@chorus.local |
marcuslee |
| Amara Brooks | amara@chorus.local |
amarabrooks |
| Noah Patel | noah@chorus.local |
noahpatel |
These are fictional but fully functional accounts with seeded posts, follows, likes, comments, reposts, messages, and notifications. Sign in as any account to post and interact as that person.
You can also create your own account from the registration screen.
To change your profile picture, open your own profile and click the red camera button on your avatar. Chorus accepts JPEG, PNG, WebP, and GIF images up to 5 MB.
npm.cmd run setup # Install and reset/seed the local database
npm.cmd run dev # Start the API and React app
npm.cmd run build # Build the React clientThe API runs at http://localhost:3001 and the React app runs at http://localhost:5173.
- Replace the local
JWT_SECRETwith a strong production secret. - Move uploads to a cloud service such as Cloudinary or Amazon S3.
- Replace SQLite with PostgreSQL if you expect significant traffic.
- Add email verification, password resets, reporting, blocking, and moderation.
Functional prototype for local development. Public deployment still needs the safeguards listed above; no packaged GitHub release is available.
