A modern, full-stack email management application built for the Code with Kiro hackathon. Looma provides a comprehensive dashboard for managing Gmail emails with advanced analytics, calendar integration, and a beautiful, responsive interface.
- Gmail Integration: Seamless email fetching and management via Google Gmail API
- Real-time Analytics: Comprehensive email statistics and visual charts
- Calendar Integration: Google Calendar events display and management
- Advanced Search: Powerful email search, filtering, and sorting capabilities
- Bulk Operations: Mark multiple emails as read, delete, or organize
- Dark/Light Theme: Persistent theme toggle with smooth transitions
- Dashboard Analytics: Visual representation of email patterns and statistics
- Priority Detection: Intelligent email priority classification
- Keyboard Shortcuts: Power-user keyboard navigation and actions
- Responsive Design: Optimized for desktop, tablet, and mobile devices
- Real-time Updates: Live data synchronization and refresh functionality
- Accessibility: WCAG compliant components and navigation
- Google OAuth2: Secure authentication with Google accounts
- JWT Tokens: Secure session management
- Password Hashing: bcrypt encryption for user credentials
- CORS Protection: Configured cross-origin resource sharing
- Framework: React 19.1.1 with modern hooks patterns
- Build Tool: Vite 7.1.2 for fast development and optimized builds
- Styling: Tailwind CSS 4.1.12 with custom design system
- Animations: Framer Motion for smooth UI transitions
- Icons: Lucide React for consistent iconography
- Routing: React Router DOM for single-page application navigation
- State Management: Context API for theme and application state
- Notifications: React Hot Toast for user feedback
- Runtime: Node.js with Express 5.1.0
- Database: PostgreSQL with pg driver
- Authentication: JWT tokens + Google OAuth2
- APIs: Google Gmail and Calendar integration
- Security: bcrypt for password hashing, CORS enabled
- Node.js (v18 or higher)
- PostgreSQL database
- Google Cloud Console account
- npm or yarn package manager
git clone <repository-url>
cd looma-email-dashboard- Go to Google Cloud Console
- Create a new project or select existing one
- Enable the following APIs:
- Gmail API
- Google Calendar API
- Google+ API (for OAuth)
- Navigate to "Credentials" in the Google Cloud Console
- Click "Create Credentials" β "OAuth 2.0 Client IDs"
- Configure the consent screen:
- Application name: "Looma Email Dashboard"
- Authorized domains:
localhost(for development)
- Create OAuth2 client:
- Application type: "Web application"
- Authorized redirect URIs:
http://localhost:3000/auth/google/callbackhttp://localhost:5173/auth/callback(for frontend)
- Download the credentials JSON file
- Rename it to
credentials.json - Place it in the project root directory
# Ubuntu/Debian
sudo apt-get install postgresql postgresql-contrib
# macOS (using Homebrew)
brew install postgresql
# Windows
# Download from https://www.postgresql.org/download/windows/# Connect to PostgreSQL
psql -U postgres
# Create database
CREATE DATABASE looma;
# Create user (optional)
CREATE USER looma_user WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE looma TO looma_user;cd Backend
npm installCreate a .env file in the Backend directory:
# Database Configuration
USER=postgres
HOST=localhost
DATABASE=looma
PORT=5432
PASSWORD=your_database_password
# JWT Secret (generate a secure random string)
JWT_KEY=your_super_secure_jwt_secret_key_here
# Optional: OpenAI API (if using AI features)
OPEN_AI_API=your_openai_api_key_herenpm startThe backend server will start on http://localhost:3000
cd Frontend
npm installnpm run devThe frontend will start on http://localhost:5173
- Place your
credentials.jsonfile in the project root - The application will automatically handle OAuth flow
- Users will be redirected to Google for authentication
- Tokens are securely stored and managed
The application will automatically create necessary tables on first run. Key tables include:
users: User account informationemail_cache: Cached email data for performanceuser_preferences: Theme and settings storage
# Required
USER=postgres # Database username
HOST=localhost # Database host
DATABASE=looma # Database name
PORT=5432 # Database port
PASSWORD=your_db_password # Database password
JWT_KEY=your_jwt_secret # JWT signing key
# Optional
OPEN_AI_API=your_openai_key # For AI features- Open the application at
http://localhost:5173 - Click "Sign in with Google" to authenticate
- Grant necessary permissions for Gmail and Calendar access
- Start managing your emails with the dashboard
- View Emails: Browse your inbox with pagination
- Search: Use the search bar to find specific emails
- Filter: Apply filters by date, sender, or status
- Bulk Actions: Select multiple emails for batch operations
- Priority Detection: Emails are automatically categorized by importance
- Email Statistics: View sent/received counts and trends
- Visual Charts: Analyze email patterns over time
- Calendar Events: See upcoming events from Google Calendar
- Quick Actions: Access frequently used features
Ctrl/Cmd + K: Open command paletteJ/K: Navigate between emailsEnter: Open selected emailD: Delete selected emailR: Mark as read/unread
looma-email-dashboard/
βββ Frontend/ # React application
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ pages/ # Route components
β β βββ context/ # React Context providers
β β βββ hooks/ # Custom React hooks
β β βββ utils/ # Utility functions
β β βββ styles/ # Styling and themes
β βββ public/ # Static assets
β βββ package.json
βββ Backend/ # Node.js server
β βββ src/
β β βββ controllers/ # Route handlers
β β βββ services/ # Business logic
β β βββ routes/ # API routes
β β βββ config/ # Configuration files
β β βββ app.js # Express app setup
β βββ server.js # Server entry point
β βββ package.json
βββ credentials.json # Google API credentials
βββ README.md
npm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
npm run lint # Run ESLintnpm start # Start server with nodemon
npm test # Run tests (when implemented)- JavaScript: ES6+ features, async/await patterns
- React: Functional components with hooks
- Styling: Tailwind CSS with custom design tokens
- API: RESTful conventions with proper status codes
- Security: Input validation, CORS, JWT authentication
cd Frontend
npm run buildcd Backend
# Set NODE_ENV=production in your environment
npm start- Set up PostgreSQL database on your hosting platform
- Configure environment variables for production
- Update Google OAuth redirect URIs for your domain
- Deploy frontend to static hosting (Vercel, Netlify)
- Deploy backend to cloud platform (Heroku, Railway, DigitalOcean)
- Use HTTPS in production
- Set secure JWT secrets
- Configure CORS for your domain
- Enable database SSL connections
- Set up proper error logging
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes following the coding standards
- Test your changes thoroughly
- Commit with descriptive messages:
git commit -m 'Add amazing feature' - Push to your branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow ESLint configuration
- Write meaningful commit messages
- Add comments for complex logic
- Ensure responsive design
- Test across different browsers
This project is licensed under the MIT License - see the LICENSE file for details.
- Code with Kiro Hackathon: For the inspiration and platform
- Google APIs: For Gmail and Calendar integration
- React Community: For the amazing ecosystem
- Tailwind CSS: For the utility-first styling approach
- Kiro AI: For development acceleration and code quality
For support, questions, or feature requests:
- Create an issue in the repository
- Contact the development team
- Check the documentation for common solutions
Built with β€οΈ for the Code with Kiro Hackathon
Looma Email Dashboard - Streamlining email management with modern web technologies