A frontend-based image gallery application built using HTML, CSS, JavaScript, and Appwrite Cloud that allows users to register, log in, upload images to cloud storage, and view their personal gallery.
This project is designed as a learning-focused cloud integration lab, helping developers understand how frontend applications interact with Backend-as-a-Service (BaaS) platforms like Appwrite. This project intentionally avoids frameworks to focus on core frontend + BaaS concepts. It focuses on:
- Authentication workflows
- Cloud storage handling
- Database-driven UI rendering
- Session-based access control
- Secure, user-isolated data access
appwrite-gallery/
│
├── index.html # Login / Register page
├── dashboard.html # User dashboard
├── gallery.html # Upload & view images
├── success.html # Success page
│
├── css/
│ └── index.css # Global styles
│
├── js/
│ └── app.js # All Appwrite logic
│
├── README.md # Project documentation
└── .gitignore
- Email & password based registration
- Secure login using Appwrite sessions
- Session validation on protected pages
- Logout functionality
- Upload images directly to Appwrite Storage
- Each image stored with a unique ID
- Title metadata attached to every upload
- Fetches images per logged-in user
- Displays images dynamically from cloud storage
- Ensures user data isolation (users see only their own images)
- Dashboard and gallery pages are inaccessible without login
- Automatic redirect for unauthorized access
- Single
app.jsas source of truth - No frameworks — pure frontend logic
- Clear separation of UI and cloud logic
- Easy to read, modify, and extend
| Technology | Role |
|---|---|
| HTML5 | Page structure |
| CSS3 | Styling and layout |
| JavaScript | Client-side logic |
| Appwrite | Authentication, Database, Storage |
| Appwrite SDK | Frontend cloud interaction |
- A modern web browser
- An Appwrite Cloud project (or self-hosted Appwrite)
No build tools, frameworks, or servers are required.
git clone https://github.com/ShakalBhau0001/appwrite-gallery.gitSimply open index.html in your browser
( use Live Server if preferred).
⚠️ Appwrite project IDs and credentials are intentionally removed from this repository.
To run the project:
- Open
app.js - Replace placeholder values with your own Appwrite project details
.setEndpoint("YOUR_APPWRITE_ENDPOINT")
.setProject("YOUR_PROJECT_ID");
const DATABASE_ID = "YOUR_DATABASE_ID";
const TABLE_ID = "YOUR_COLLECTION_ID";
const BUCKET_ID = "YOUR_BUCKET_ID";- Users register and log in using Appwrite Account APIs
- Active sessions are used to protect routes
- Selected image is uploaded to Appwrite Storage
- Metadata (title, image ID, user ID) is stored in Appwrite Database
- Database is queried using the logged-in user ID
- Images are fetched securely from storage
- Gallery UI is rendered dynamically
- Frontend-only project (no backend server)
- Appwrite IDs must be manually configured
- No image deletion or editing (yet)
- Styling kept intentionally minimal
- Image delete & update options
- Pagination or lazy loading
- Image preview modal
- Drag & drop upload
- Role-based access (admin / user)
This project is created strictly for educational and learning purposes.
It demonstrates cloud integration concepts and frontend-to-BaaS communication. It is not intended for production use without additional security hardening.
Shakal Bhau
GitHub: ShakalBhau0001