Skip to content

Hotel Annapurna is a complete hotel management system built with Core PHP, HTML, CSS, and JavaScript. It lets users book rooms, reserve tables, and order food online, while giving admins full control through a powerful dashboard. It focuses on real-world features like payments, email notifications, & secure user management without using frameworks!

Notifications You must be signed in to change notification settings

mahendramahara/Hotel-Annapurna-Web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

39 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🏨 Hotel Annapurna - Room Booking, Food Ordering & Table Reservation System

🌐 Live Demo URLs

⚠️ Important: These are FREE hosting URLs with limitations. Not recommended for production data. For testing: Use the credentials below or register with a Gmail account only (Gmail SMTP is configured)

Live URLs (Test at with your test machine):

Test Credentials (User Only):

  • Email: suresh.bdr@gmail.com
  • Password: 12345678
  • Or register a new account with any Gmail address

πŸ“– Project Introduction

Hotel Annapurna is a comprehensive hotel management and booking system built with Core PHP, HTML, CSS, and JavaScript (no frameworks, no heavy dependencies except Fetch API). This system is designed to reduce the complexity of in-counter menu ordering and provide a seamless digital experience for both hotel staff and customers.

🎯 Problem Solved

In traditional hotels, customers face several challenges:

  • ❌ Long queues at the counter for food ordering
  • ❌ Difficulty browsing and selecting from printed menus
  • ❌ Time-consuming manual booking processes
  • ❌ No real-time order tracking
  • ❌ Complicated room/table reservation procedures
  • ❌ No order history or order management for customers

Hotel Annapurna solves these problems by providing: βœ… Quick online food ordering - Browse menu anytime, order online βœ… Instant room booking - Check availability and book rooms 24/7 βœ… Easy table reservation - Reserve dining tables for special occasions βœ… Real-time order tracking - Know exactly when your order is ready βœ… Unified cart system - Combine food, room, and table bookings in one checkout βœ… Multiple payment options - Cash, eSewa, Stripe integration βœ… Admin control - Complete management dashboard for staff


πŸš€ Key Features

For Customers

  • 🍽️ Online Food Ordering - Browse menu, add to cart, place orders
  • πŸ›οΈ Room Booking - View available rooms, check amenities, reserve instantly
  • πŸͺ‘ Table Reservation - Reserve dining tables with capacity selection
  • πŸ’³ Multiple Payment Methods - Cash at Counter, eSewa, Stripe
  • πŸ“¦ Shopping Cart - Multi-item cart (food + rooms + tables)
  • πŸ“ Order History - Track all your orders and bookings
  • πŸ‘€ User Profile - Manage account info, view past orders
  • πŸ“š Blog & News - Read hotel updates, like/comment/share posts
  • 🎟️ Coupon Codes - Apply discount codes at checkout
  • πŸ“§ Email Notifications - Get order confirmations and updates

For Admin/Staff

  • πŸ“Š Dashboard - Real-time statistics and analytics
  • 🍽️ Food Management - Add/Edit/Delete menu items with categories
  • πŸ›οΈ Room Management - Control room inventory, pricing, availability
  • πŸͺ‘ Table Management - Manage dining tables and bookings
  • πŸ“‹ Order Management - View, update, and track all orders
  • πŸ‘₯ Customer Management - Manage customer accounts and roles
  • πŸ’° Payment Tracking - Monitor payment status (Pending/Paid/Failed)
  • πŸ“Έ Image Management - Upload and manage product images
  • πŸ“§ Contact Management - Handle customer inquiries
  • πŸ“ Blog Management - Create, edit, delete blog posts
  • πŸ’Ό Staff Management - Manage staff members and roles
  • 🎟️ Coupon Management - Create and manage discount codes

Technical Features

  • βœ… Prepared Statements - Protection against SQL injection
  • βœ… Role-Based Access Control - Admin, Staff, Customer roles
  • βœ… Secure Authentication - Password hashing with verification
  • βœ… Email Notifications - PHPMailer integration
  • βœ… Payment Gateway Integration - eSewa & Stripe
  • βœ… Session Management - Secure user sessions
  • βœ… Responsive Design - Works on mobile, tablet, desktop
  • βœ… Activity Logging - Track all user activities
  • βœ… OTP Verification - Email-based registration verification
  • βœ… Password Reset - Secure password recovery

πŸ“‹ Prerequisites

Before you begin, ensure you have the following:

  • XAMPP (Apache + MySQL + PHP 7.4+)

  • Text Editor/IDE - VS Code, Sublime Text, or similar

  • Git (optional) - For version control

  • Google Account (optional) - For Gmail SMTP setup

  • Modern Web Browser - Chrome, Firefox, Edge, Safari


πŸš€ Step-by-Step Local Setup Guide

βœ… Step 1: Start XAMPP Services

  1. Open XAMPP Control Panel
  2. Click START for:
    • βœ… Apache
    • βœ… MySQL
  3. Wait for green indicators showing both are running
Status:
βœ“ Apache: Running (Port 80)
βœ“ MySQL: Running (Port 3306)

βœ… Step 2: Download/Clone Project Files

  1. Navigate to XAMPP htdocs folder:

    C:\xampp\htdocs\
    
  2. Option A: Clone using Git

    git clone https://github.com/mahendramahara/Hotel-Annapurna-Web.git
  3. Option B: Download Manually

    • Download project ZIP file
    • Extract to C:\xampp\htdocs\Hotel-Annapurna-Web

Your project should be at:

C:\xampp\htdocs\Hotel-Annapurna-Web\

βœ… Step 3: Configure Database Connection

Open file: config/db.php

Update these credentials:

<?php
$host = "localhost";        // Database host (localhost for local)
$username = "root";         // Default XAMPP username
$password = "";             // Leave empty for default XAMPP
$database = "hotel_annapurna"; // Database name

// Connection
$conn = new mysqli($host, $username, $password, $database);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
?>

Default XAMPP Credentials:

  • Host: localhost
  • Username: root
  • Password: `` (empty)

βœ… Save the file


βœ… Step 4: Create Database Tables

  1. Open your browser and navigate to:

    http://localhost/Hotel-Annapurna-Web/database_setup.php
    
  2. You should see:

    πŸ—„οΈ Hotel Annapurna - Database Setup
    
  3. The script will automatically create all tables:

    • βœ… Users table
    • βœ… Food Items table
    • βœ… Rooms table
    • βœ… Dining Tables table
    • βœ… Orders table
    • βœ… Blogs table
    • βœ… Coupons table
    • βœ… Contact Requests table
    • βœ… Activity Logs table
    • βœ… And more...
  4. You should see:

    βœ… Database Setup Completed Successfully!
    

If tables already exist: They will be skipped, which is fine.


βœ… Step 5: Seed Demo Data (Optional)

To populate the database with sample data for testing:

  1. Navigate to:

    http://localhost/Hotel-Annapurna-Web/seed_database.php
    
  2. This will add:

    • πŸ“Έ Sample rooms, food items, tables
    • 🎟️ Test coupon codes
    • πŸ“ Sample blog posts
    • πŸ‘₯ Demo user accounts

Sample Login Credentials (if seeded):

  • Email: customer@example.com
  • Password: password123

βœ… Step 6: Configure SMTP Email Service

Email is needed for:

  • Registration verification
  • Password reset emails
  • Order confirmations
  • Contact form responses

Option A: Gmail SMTP (Recommended)

Prerequisites:

  1. Have a Google account

  2. Enable 2-Factor Authentication:

  3. Generate App Password:

Configure in Code:

Open: config/setup_mailer.php

Find and update:

$mail->Host       = 'smtp.gmail.com';           // Gmail SMTP server
$mail->SMTPAuth   = true;
$mail->Username   = 'your-email@gmail.com';    // Your Gmail address
$mail->Password   = 'your-app-password';       // 16-char password from above
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port       = 587;

// Set sender
$mail->setFrom('your-email@gmail.com', 'Hotel Annapurna');

βœ… Save the file


Option B: Mailtrap.io (For Testing)

Setup Mailtrap:

  1. Go to: https://mailtrap.io
  2. Create free account
  3. Create new inbox
  4. Copy your SMTP credentials

Configure in Code:

Open: config/setup_mailer.php

Find and update:

$mail->Host       = 'smtp.mailtrap.io';        // Mailtrap SMTP
$mail->SMTPAuth   = true;
$mail->Username   = 'your-mailtrap-user';    // From Mailtrap dashboard
$mail->Password   = 'your-mailtrap-password'; // From Mailtrap dashboard
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port       = 2525;

βœ… Save the file


βœ… Step 7: Configure eSewa Payment Gateway

eSewa is a payment method for testing payments in Nepal.

Update File Paths:

Open: includes/esewa-helper.php

Verify/Update the base URL:

$base_url = "http://localhost/Hotel-Annapurna-Web";

Ensure callback URLs match:

$success_url = $base_url . "/esewa-success.php";
$failure_url = $base_url . "/esewa-failure.php";

Also update: payment.php

In the JavaScript payment form, update eSewa redirect URLs:

success_url: window.location.origin + '/Hotel-Annapurna-Web/esewa-success.php',
failure_url: window.location.origin + '/Hotel-Annapurna-Web/esewa-failure.php',

For production, change to:

success_url: 'https://yourdomain.com/esewa-success.php',
failure_url: 'https://yourdomain.com/esewa-failure.php',

Also check: api/esewa-status-check.php

// Verify URLs match your domain

βœ… Save all files

eSewa Test Credentials:

  • MERCHANT CODE: (already configured in code)
  • Test credentials for sandbox: Use test account in eSewa documentation

βœ… Step 8: Access the Application

🌐 Main Website (Customer Side):

http://localhost/Hotel-Annapurna-Web/

πŸ” Admin Dashboard (Staff/Admin):

http://localhost/Hotel-Annapurna-Web/admin/

πŸ‘€ Creating Admin Account

Quick Method: Direct Database Update

  1. Open phpMyAdmin:

    http://localhost/phpmyadmin
    
  2. Select Database:

    • Click on hotel_annapurna in left panel
  3. Edit User:

    • Click on users table
    • Find your user account
    • Click Edit (pencil icon)
    • Change role column from customer to admin
    • Click Save
  4. Login to Admin:

    URL: http://localhost/Hotel-Annapurna-Web/admin/
    Email: (your registered email)
    Password: (your password)
    

πŸ§ͺ Testing the Application

Customer Test Flow:

  1. Register/Login:

    • Go to: /register.php
    • Create new account
    • Verify email (or check Mailtrap inbox)
  2. Browse Items:

    • Menu β†’ Add food items to cart
    • Rooms β†’ Add rooms to cart
    • Tables β†’ Add tables to cart
  3. Checkout:

    • View Cart β†’ Proceed to Checkout
    • Select Payment Method:
      • πŸ’΅ Cash - Pay at counter (instant)
      • πŸ“± eSewa - Test payment gateway
      • πŸ’³ Stripe - Test card: 4242 4242 4242 4242
  4. Track Order:

    • Profile β†’ My Orders (for food)
    • Profile β†’ My Bookings (for rooms/tables)

Admin Test Flow:

  1. Login to Admin:

    • URL: /admin/
    • Use admin credentials
  2. Explore Sections:

    • πŸ“Š Dashboard - Overview stats
    • 🍽️ Food Items - Manage menu
    • πŸ›οΈ Rooms - Manage rooms
    • πŸͺ‘ Tables - Manage tables
    • πŸ“‹ Service Requests - View all orders
    • πŸ‘₯ Customers - Manage users
    • πŸ’° Coupons - Create discounts
    • πŸ“ Blogs - Create posts
    • πŸ’Ό Staffs - Manage staff

πŸ“ Project Structure

Hotel-Annapurna-Web/
β”‚
β”œβ”€β”€ admin/                          # Admin Dashboard
β”‚   β”œβ”€β”€ index.php                  # Admin home page
β”‚   β”œβ”€β”€ login.php                  # Admin login
β”‚   β”œβ”€β”€ logout.php                 # Admin logout
β”‚   β”œβ”€β”€ includes/
β”‚   β”‚   └── auth-guard.php        # Authentication check
β”‚   β”œβ”€β”€ sections/                  # Admin management sections
β”‚   β”‚   β”œβ”€β”€ blogs.php             # Blog management
β”‚   β”‚   β”œβ”€β”€ contacts.php          # Contact management
β”‚   β”‚   β”œβ”€β”€ coupons.php           # Coupon management
β”‚   β”‚   β”œβ”€β”€ customers.php         # Customer management
β”‚   β”‚   β”œβ”€β”€ menu_items.php        # Food item management
β”‚   β”‚   β”œβ”€β”€ profile.php           # Admin profile
β”‚   β”‚   β”œβ”€β”€ requests.php          # Order management
β”‚   β”‚   β”œβ”€β”€ reviews.php           # Review management
β”‚   β”‚   β”œβ”€β”€ rooms.php             # Room management
β”‚   β”‚   β”œβ”€β”€ staffs.php            # Staff management
β”‚   β”‚   └── tables.php            # Table management
β”‚   └── assets/                    # Admin styles and scripts
β”‚       β”œβ”€β”€ css/
β”‚       β”œβ”€β”€ js/
β”‚       └── images/
β”‚
β”œβ”€β”€ api/                            # Backend API Endpoints
β”‚   β”œβ”€β”€ admin-blogs.php            # Blog API
β”‚   β”œβ”€β”€ admin-contacts.php         # Contact API
β”‚   β”œβ”€β”€ admin-coupons.php          # Coupon API
β”‚   β”œβ”€β”€ admin-dashboard.php        # Dashboard stats
β”‚   β”œβ”€β”€ admin-orders.php           # Order management API
β”‚   β”œβ”€β”€ admin-users.php            # User management API
β”‚   β”œβ”€β”€ blog-interactions.php      # Blog likes/comments API
β”‚   β”œβ”€β”€ cart-handler.php           # Shopping cart API
β”‚   β”œβ”€β”€ contact-handler.php        # Contact form API
β”‚   β”œβ”€β”€ create-booking.php         # Create room/table booking
β”‚   β”œβ”€β”€ create-cart-order.php      # Cart checkout API
β”‚   β”œβ”€β”€ esewa-status-check.php    # eSewa payment verification
β”‚   β”œβ”€β”€ menu-handler.php           # Food item API
β”‚   β”œβ”€β”€ order-handler.php          # Order processing API
β”‚   β”œβ”€β”€ profile-handler.php        # User profile API
β”‚   β”œβ”€β”€ room-handler.php           # Room management API
β”‚   β”œβ”€β”€ table-handler.php          # Table management API
β”‚   └── validate-coupon.php        # Coupon validation API
β”‚
β”œβ”€β”€ config/                         # Configuration Files
β”‚   β”œβ”€β”€ db.php                     # Database connection
β”‚   └── setup_mailer.php           # Email configuration
β”‚
β”œβ”€β”€ includes/                       # Shared Components
β”‚   β”œβ”€β”€ activity-logger.php        # Logging utility
β”‚   β”œβ”€β”€ esewa-helper.php           # eSewa payment helper
β”‚   β”œβ”€β”€ footer.php                 # Footer component
β”‚   └── header.php                 # Header/navigation
β”‚
β”œβ”€β”€ seeders/                        # Database Seeders
β”‚   β”œβ”€β”€ blogs_seeder.php           # Sample blogs
β”‚   β”œβ”€β”€ coupons_seeder.php         # Sample coupons
β”‚   β”œβ”€β”€ food_items_seeder.php      # Sample food items
β”‚   β”œβ”€β”€ rooms_seeder.php           # Sample rooms
β”‚   β”œβ”€β”€ tables_seeder.php          # Sample tables
β”‚   └── users_seeder.php           # Sample users
β”‚
β”œβ”€β”€ assets/                         # Frontend Assets
β”‚   β”œβ”€β”€ css/                       # Stylesheets
β”‚   β”‚   β”œβ”€β”€ style.css              # Main styles
β”‚   β”‚   β”œβ”€β”€ responsive.css         # Mobile responsive
β”‚   β”‚   β”œβ”€β”€ menu.css
β”‚   β”‚   β”œβ”€β”€ rooms-tables.css
β”‚   β”‚   β”œβ”€β”€ booking.css
β”‚   β”‚   β”œβ”€β”€ cart.css
β”‚   β”‚   β”œβ”€β”€ payment.css
β”‚   β”‚   └── ...
β”‚   β”œβ”€β”€ js/                        # JavaScript files
β”‚   β”‚   β”œβ”€β”€ script.js              # Main script
β”‚   β”‚   β”œβ”€β”€ forgetpwd.js
β”‚   β”‚   └── ...
β”‚   └── images/                    # Static images
β”‚       β”œβ”€β”€ home_slider/
β”‚       β”œβ”€β”€ offer_images/
β”‚       └── service_option/
β”‚
β”œβ”€β”€ images/                         # Uploaded Content
β”‚   β”œβ”€β”€ blogs/                     # Blog images
β”‚   β”œβ”€β”€ food/                      # Food item images
β”‚   β”œβ”€β”€ menus/                     # Menu images
β”‚   β”œβ”€β”€ profiles/                  # User profile pictures
β”‚   β”œβ”€β”€ rooms/                     # Room images
β”‚   └── tables/                    # Table images
β”‚
β”œβ”€β”€ uploads/                        # User Uploads
β”‚   └── profiles/                  # User profile uploads
β”‚
β”œβ”€β”€ database_setup.php              # Create database tables
β”œβ”€β”€ seed_database.php               # Populate demo data
β”œβ”€β”€ index.php                       # Home page
β”œβ”€β”€ rooms.php                       # Browse rooms
β”œβ”€β”€ menu.php                        # Browse food items
β”œβ”€β”€ tables.php                      # Browse tables
β”œβ”€β”€ blogs.php                       # Browse blogs
β”œβ”€β”€ blog-read.php                   # Read blog details
β”œβ”€β”€ cart.php                        # Shopping cart
β”œβ”€β”€ payment.php                     # Payment processing
β”œβ”€β”€ booking.php                     # Booking details
β”œβ”€β”€ contact.php                     # Contact form
β”œβ”€β”€ register.php                    # User registration
β”œβ”€β”€ register-handler.php            # Registration processing
β”œβ”€β”€ login.php                       # User login
β”œβ”€β”€ login-handler.php               # Login processing
β”œβ”€β”€ logout.php                      # User logout
β”œβ”€β”€ profile.php                     # User profile
β”œβ”€β”€ my-orders.php                   # Order history
β”œβ”€β”€ my-bookings.php                 # Booking history
β”œβ”€β”€ forget-password.php             # Password reset request
β”œβ”€β”€ reset-password.php              # Password reset form
β”œβ”€β”€ verify-register.php             # Email verification
β”œβ”€β”€ esewa-success.php               # eSewa success callback
β”œβ”€β”€ esewa-failure.php               # eSewa failure callback
β”œβ”€β”€ check_blogs.php                 # Blog checking utility
β”œβ”€β”€ README.md                       # This file
└── composer.json                   # Dependencies (PHPMailer)

πŸ” Security Considerations

Important Security Reminders:

  1. Never Commit Sensitive Data:

    • Database passwords
    • Email passwords
    • API keys
    • Payment credentials
  2. Before Going to Production:

    • Change default admin password
    • Use HTTPS instead of HTTP
    • Enable firewall rules
    • Regular database backups
    • Implement rate limiting
    • Add CSRF token validation
    • Update all credentials
  3. Database Security:

    • Regular backups
    • Restrict database access
    • Use strong passwords
    • Minimal user privileges
  4. Code Security:

    • All queries use prepared statements βœ…
    • Input validation on all forms βœ…
    • Output escaping implemented βœ…
    • SQL injection protection βœ…

🎟️ Sample Coupon Codes (After Seeding)

After running seed_database.php, use these codes:

Code Discount Min Purchase Details
WELCOME10 10% off RS 500 Welcome discount
SAVE20 20% off RS 1000 Limited time
FREESHIP RS 500 off RS 2000 Delivery discount

πŸ’³ Payment Gateway Test Credentials

eSewa Test Account

Use these credentials for testing eSewa payments:

Field Value
Mobile Number 9806800001 (or 9806800002, 9806800003, 9806800004, 9806800005)
Password Nepal@123
OTP 123456
Test URL https://developer.esewa.com.np/pages/Epay#credentials&urls

How to Test:

  1. Go to checkout and select eSewa payment
  2. You'll be redirected to eSewa sandbox
  3. Login with phone: 9806800001 and password: Nepal@123
  4. Enter OTP: 123456
  5. Confirm payment

Stripe Test Cards

Use these test card numbers for testing Stripe payments:

Card Type Card Number Expiry CVC
Visa 4242 4242 4242 4242 12/27 123
Test Success 4242 4242 4242 4242 Any future date Any 3 digits
Test Declined 4000 0000 0000 0002 Any future date Any 3 digits
Test Documentation https://docs.stripe.com/testing?testing-method=card-numbers - -

How to Test:

  1. Go to checkout and select Stripe (Credit/Debit Card)
  2. Enter card number: 4242 4242 4242 4242
  3. Expiry: 12/27 (or any future date)
  4. CVC: 123 (or any 3 digits)
  5. Complete payment

πŸ’» Technology Stack

Technology Details
Backend PHP 7.4+
Database MySQL/MariaDB
Frontend HTML5, CSS3, JavaScript (Vanilla)
Email PHPMailer
Payment eSewa API, Stripe
APIs RESTful endpoints, Fetch API
Security Prepared Statements, Password Hashing

πŸŽ‰ Getting Help

Common Issues:

Issue Solution
Database won't connect Check credentials in config/db.php
Email not working Verify SMTP settings, enable 2FA (Gmail)
eSewa error Update URLs in includes/esewa-helper.php
Admin can't access Make sure role is set to admin in database
Images won't upload Check folder permissions and file size limits

Resources:

  • Database Issues: Check config/db.php
  • Email Issues: Check config/setup_mailer.php
  • Payment Issues: Check includes/esewa-helper.php
  • Admin Issues: Check user role in phpMyAdmin

πŸ“ž Support & Contact

Get in Touch:

Developer: Mahendra Mahara

Connect on:

How to Get Support:

  1. Check Documentation - Review README and code comments
  2. Test Locally First - Run on localhost with XAMPP
  3. Use Test Credentials - Email: suresh.bdr@gmail.com, Password: 12345678
  4. Gmail Required - For email features, use Gmail account only
  5. GitHub Issues: Open an issue on GitHub repository
  6. Email: Contact project owner
  7. API: See comments in api/ folder files

πŸ“œ License

This project is open-source and free for educational use.


🌟 Key Highlights

βœ… Complete System - From customer interface to admin dashboard
βœ… Multiple Payment Methods - Cash, eSewa, Stripe
βœ… Email Integration - Notifications and verification
βœ… Responsive Design - Works on all devices
βœ… Admin Control - Full CRUD operations
βœ… Real-time Tracking - Order status updates
βœ… Security First - Prepared statements, password hashing
βœ… User Friendly - Intuitive interface and navigation


πŸ‘¨β€πŸ’» About

Created by: Mahendra Mahara

Purpose: Educational project for learning core web development concepts without frameworks.

What Makes This Special:

  • 🎯 No Frameworks - Pure PHP, HTML, CSS, JavaScript
  • 🎯 No Dependencies - Only PHPMailer (email library)
  • 🎯 Production Ready - Secure, scalable, maintainable code
  • 🎯 Well Documented - Comments explain complex logic
  • 🎯 Learning Focused - Perfect for students and learners
  • 🎯 Real-World Features - Payment, Email, Booking systems

Version: 2.2.0
Last Updated: December 2025
Status: βœ… Production Ready

Built with ❀️ by Mahendra Mahara

About

Hotel Annapurna is a complete hotel management system built with Core PHP, HTML, CSS, and JavaScript. It lets users book rooms, reserve tables, and order food online, while giving admins full control through a powerful dashboard. It focuses on real-world features like payments, email notifications, & secure user management without using frameworks!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published