A minimalist social link aggregator — where links are shared, curated, and remembered.
A real-time, full-stack social platform built for the quiet web. Powered by Firebase for centralized data, authentication, and real-time updates.
Portal Room is a retro-inspired social platform where users can:
- Submit links with titles, descriptions, and tags
- Comment on links in real-time
- Vote on links (upvote/downvote) to rank content
- Create curated lists of related links
- View public and personal dashboards
- Search and filter links by keywords and tags
- Real-time updates: See new posts and comments instantly without refreshing
| Feature | Description |
|---|---|
| User Accounts | Secure registration and login powered by Firebase Auth |
| Authentication | Protected pages with session management |
| Centralized Data | All data is stored in Cloud Firestore |
| Real-time Sync | Instant updates for new posts and comments across all users |
| Link Submission | Submit URLs with title, description, and tags |
| Link Management | Edit and delete your own links |
| Comments | Add, view, and delete comments on any link |
| Voting System | Upvote/downvote links to surface the best content |
| Link Lists | Create custom collections and add links to them |
| Search | Real-time search across titles, descriptions, and tags |
| Mobile Responsive | Fully optimized for mobile devices |
| Modern Stack | Vanilla HTML5, CSS3, JS + Firebase Backend |
portalroom/
├── index.html # Homepage: latest links (public)
├── login.html # User login (email-based)
├── register.html # New user registration
├── dashboard.html # Logged-in feed with search
├── submit.html # Form to submit new links
├── profile.html # View your links, lists, and manage data
├── list.html # Create a new link list
├── css/
│ └── style.css # Responsive, modern styling
├── js/
│ └── app.js # Core logic integrated with Firebase
└── README.md # This file
- Create a project at console.firebase.google.com.
- Enable Authentication (Email/Password provider).
- Enable Cloud Firestore and set your Security Rules:
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /profiles/{uid} { allow read: if true; allow write: if request.auth != null && request.auth.uid == uid; } match /posts/{postId} { allow read: if true; allow create: if request.auth != null; allow update, delete: if request.auth != null && request.auth.uid == resource.data.user_id; match /comments/{commentId} { allow read: if true; allow create: if request.auth != null; allow delete: if request.auth != null && request.auth.uid == resource.data.user_id; } match /votes/{userId} { allow read: if true; allow write: if request.auth != null && request.auth.uid == userId; } } } }
- Create a Web App in your Firebase project and copy the
firebaseConfigobject. - Open
js/app.jsand replace thefirebaseConfigblock at the top with your credentials.
- Fork or clone this repo.
- Go to Settings → Pages.
- Set Source to your branch (e.g.,
main) →/ (root). - Click Save.
- Your site will be live at
https://YOURUSERNAME.github.io/portalroom.
- Centralized: All data is shared across all users globally.
- Secure: Authentication and Firestore Security Rules ensure users can only modify their own content.
- Real-time: Firebase Firestore listeners keep the feed "alive" without manual refreshes.
MIT — Do whatever you want with this. Modify it. Break it. Make it yours.
Portal Room is intentionally minimal, but contributions are welcome:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
- Frontend: Vanilla HTML5, CSS3, JavaScript (ES6+)
- Backend: Firebase (Firestore, Auth)
- Deployment: GitHub Pages (or any static host)
"I don't want to be famous. I just want to leave something behind." — Portal Room
Version: 2.1.0 (Firebase Edition) Status: Ready for Backend Configuration ✅