A modern social platform built with cutting-edge technologies, featuring real-time interactions and a sleek dark theme UI.
Demo Β· Documentation Β· Report Bug

- Secure Firebase Auth
- Email/Password with validation
- One-click Google OAuth
- Persistent sessions
- Protected routes
- Dynamic Post System
- Real-time post feed
- Like/Unlike interactions
- Nested comments
- Timestamp localization
- Socket.io Integration
- Instant messaging
- Live notifications
- Connection management
- Real-time updates
- Polished Design
- Dark theme
- Glassmorphism effects
- Responsive layout
- Smooth animations
Click to expand
{
"core": {
"framework": "Next.js 15.1.6",
"ui": "React 19.0.0",
"styling": "Tailwind CSS 3.4.1",
"animations": "Framer Motion 12.4.1",
"state": "Zustand 5.0.3"
}
}
{
"services": {
"database": "Firebase/Firestore 11.3.0",
"auth": "Firebase Auth",
"realtime": {
"server": "Express 4.21.2",
"websockets": "Socket.io 4.8.1"
}
}
}
{
"language": "TypeScript 5",
"linting": "ESLint 9",
"formatting": "Prettier",
"package-manager": "npm"
}
Expand to view full structure
nexus-social/
βββ π± src/
β βββ app/ # Next.js pages & layouts
β β βββ layout.tsx # Root layout with providers
β β βββ page.tsx # Landing page
β β βββ auth/
β β β βββ login/ # Login page
β β β βββ register/ # Registration page
β β βββ dashboard/ # Protected dashboard routes
β βββ components/
β β βββ auth/ # Authentication components
β β β βββ SignInForm.tsx
β β β βββ RegisterForm.tsx
β β βββ dashboard/ # Dashboard components
β β β βββ PostFeed.tsx # Main post feed
β β β βββ DashboardNavbar.tsx
β β βββ ui/ # Shared UI components
β β βββ Button.tsx
β β βββ LoadingSpinner.tsx
β βββ lib/ # Core utilities
β β βββ firebase.ts # Firebase configuration
β β βββ socket.js # Socket.io client setup
β βββ store/ # State management
β β βββ useAuthStore.ts # Authentication state
β βββ styles/ # Global styles
β β βββ globals.css # Tailwind imports
β βββ types/ # TypeScript types
β β βββ index.ts # Shared types
β βββ utils/ # Utility functions
β βββ dateFormat.ts # Date formatting
βββ π server/ # Socket.io backend
β βββ index.js # Express & Socket.io setup
β βββ package.json # Server dependencies
βββ π¨ public/ # Static assets
β βββ images/
β β βββ default_pfp.jpg # Default profile picture
β βββ favicon.ico
βββ .env.local # Environment variables
βββ next.config.js # Next.js configuration
βββ tailwind.config.ts # Tailwind configuration
βββ tsconfig.json # TypeScript configuration
βββ package.json # Project dependencies
- Node.js 16+
- npm/yarn
- Firebase account
- Git
1οΈβ£ Firebase Configuration Create a new Firebase project and enable:
- Authentication (Email/Password & Google)
- Firestore Database
- Realtime Database (optional)
2οΈβ£ Environment Variables
Create .env.local
in the root directory:
# Firebase Configuration
NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id
# Socket.io Configuration (for development)
NEXT_PUBLIC_SOCKET_URL=http://localhost:3001
# Other Configuration
NEXT_PUBLIC_APP_URL=http://localhost:3000
NODE_ENV=development
3οΈβ£ Firebase Security Rules Add these rules to your Firestore:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read: if request.auth != null;
allow write: if request.auth != null && request.auth.uid == userId;
}
match /posts/{postId} {
allow read: if request.auth != null;
allow create: if request.auth != null;
allow update: if request.auth != null;
allow delete: if request.auth != null && resource.data.authorId == request.auth.uid;
}
}
}
4οΈβ£ Development Setup
# Install dependencies
npm install
# Install server dependencies
cd server && npm install
cd ..
# Start development servers
npm run dev # Terminal 1: Next.js frontend
cd server && node index.js # Terminal 2: Socket.io backend
5οΈβ£ TypeScript Configuration
The tsconfig.json
includes:
{
"compilerOptions": {
"target": "es5",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"esModuleInterop": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve",
"incremental": true,
"plugins": [
{
"name": "next"
}
],
"paths": {
"@/*": ["./src/*"]
}
},
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
"exclude": ["node_modules"]
}
- User authentication system
- Post creation & feed
- Like/Unlike functionality
- Comments system
- Real-time messaging setup
- Responsive dark UI
- Route protection
- Image upload system
- User profiles
- Advanced post features
- Enhanced real-time features
We welcome contributions! See our Contributing Guide for details.
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Open a pull request
Licensed under the MIT License.
Made with β€οΈ by ManINeedToSleep