A modern, full-featured web application for saving, organizing, and sharing your valuable links and resources. Built with Next.js 14, TypeScript, Tailwind CSS, and Firebase.
- 🔐 User Authentication: Secure sign up and login with Firebase Auth
- 📚 Resource Management: Create, read, update, and delete your resources
- 🤖 AI-Powered Auto-Enrichment: Automatically fetch titles, generate descriptions, and suggest tags from URLs
- 🏷️ Tag Organization: Categorize resources with predefined tags (Tutorial, Article, Video, Tool, etc.)
- 🔍 Search & Filter: Quickly find resources with search and tag filtering
- 🌍 Public/Private Toggle: Share resources publicly or keep them private
- ✏️ Edit Resources: Update any of your saved resources anytime
- 👥 Shared Dump: Discover and save public resources from other users
- 📊 Profile Dashboard: View statistics and manage account settings
- Responsive Design: Works seamlessly on desktop, tablet, and mobile devices
- Beautiful UI: Modern gradient designs with smooth animations
- Loading States: Clear feedback during async operations
- Error Handling: User-friendly error messages
- Success Notifications: Visual confirmation of actions
This project uses Next.js 14 with App Router and Firebase for authentication and database.
- Node.js 18+
- npm or yarn
- Firebase project
-
Clone the repository
git clone https://github.com/Rayan9064/dumpit.git cd dumpit -
Install dependencies
npm install
-
Set up Firebase
- Create a Firebase project at https://console.firebase.google.com/
- Enable Email/Password authentication in the Authentication settings
- Create a Firestore database (start in test mode for local development)
-
Configure environment variables
Create a
.env.localfile in the root directory and add your Firebase configuration:# Firebase Client Configuration (public - exposed to browser) 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 # Firebase Admin SDK (server-side only - keep secure) FIREBASE_PROJECT_ID=your_project_id FIREBASE_CLIENT_EMAIL=firebase-adminsdk-xxxxx@your-project.iam.gserviceaccount.com FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nYOUR_PRIVATE_KEY\n-----END PRIVATE KEY-----\n" # Optional: AI-powered auto-enrichment GEMINI_API_KEY=your-gemini-api-key GEMINI_MODEL=gemini-2.0-flash-exp
-
Run the development server
npm run dev
-
Open your browser
- Navigate to
http://localhost:3000 - Create an account and start saving resources!
- Navigate to
This Next.js application can be deployed to any platform that supports Node.js:
- Connect your GitHub repository to Vercel
- Add environment variables in Vercel dashboard
- Deploy automatically on git push
- Netlify: Use
npm run buildand deploy the.nextfolder - Railway: Connect repository and set environment variables
- Render: Use the Node.js runtime with build command
npm run build
Ensure all environment variables are set in your deployment platform:
NEXT_PUBLIC_FIREBASE_*variables for client-side Firebase configFIREBASE_*variables for server-side Admin SDKGEMINI_*variables for AI features (optional)
For detailed Firebase setup steps, see FIREBASE_SETUP.md.
Supabase files have been removed from the codebase as part of the migration to Firebase. If you see any references to Supabase, please open an issue.
- Click "Add Resource" in the navigation
- Fill in the title, link, and optional note
- Select a tag category
- Toggle public/private visibility
- Click "Add Resource"
- Go to your Dashboard
- Find the resource you want to edit
- Click the edit icon (✏️) on the resource card
- Update the fields in the modal
- Click "Save Changes"
- Click "Profile" in the navigation
- View your resource statistics
- Update your username
- Set default privacy preference for new resources
- Click "Shared Dump" to see public resources from the community
- Search and filter to find what you need
- Click "Save to My Dump" to add them to your collection
- Framework: Next.js 14 (App Router)
- Frontend: React 18
- Language: TypeScript
- Styling: Tailwind CSS
- Icons: Lucide React
- Backend: Firebase (Auth + Firestore + Admin SDK)
- Build Tool: Next.js (built-in)
- Linting: ESLint
This application uses Next.js 14 with App Router for a modern, full-stack React experience:
- App Router: File-based routing with nested layouts
- Server Components: Optimized performance with selective client components
- TypeScript: Full type safety throughout the application
- Responsive Design: Mobile-first approach with Tailwind CSS
- Server-Side API Routes: Secure database operations with Firebase Admin SDK
- Username Validation: Server-side uniqueness checking
- Resource Management: Full CRUD operations via RESTful API
- User Profile Management: Secure profile updates and statistics
- Public Resource Discovery: Optimized queries for community features
- Client-Side Auth: Firebase Auth for user authentication
- Server-Side Validation: All database operations validated server-side
- Secure API Keys: Environment variables properly scoped (NEXT_PUBLIC_ for client, server-only for sensitive data)
- Input Sanitization: Server-side validation for all user inputs
- ✅ Migrated to Secure API Routes: Moved all Firestore operations from client-side to secure server-side API routes
- ✅ Firebase Admin SDK Integration: Server-side database access with proper authentication
- ✅ User-Friendly Error Messages: Replaced technical Firebase errors with clear, actionable messages
- ✅ Enhanced Security: No direct client database access, all operations validated server-side
- ✅ Added ability to edit existing resources
- ✅ New EditResource component with modal interface
- ✅ Edit button on resource cards in Dashboard
- ✅ Full CRUD operations now supported
- ✅ Maintains all resource properties (title, link, note, tag, visibility)
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is open source and available under the MIT License.
Rayan9064
- GitHub: @Rayan9064
- Built with Next.js
- Styled with Tailwind CSS
- Icons from Lucide
- Authentication & Database by Firebase