https://github.com/alexy-os/adminity
AdminitY is a secure and modular admin panel built using Node.js, Express, Handlebars, and NeDB for database management
https://github.com/alexy-os/adminity
admin admin-dashboard admin-panel auth authentication dashboard dashboard-templates handlebars handlebars-js handlebarsjs miniapp nedb node nodejs tailwindcss telegram telegram-bot telegramapp webapp
Last synced: about 2 months ago
JSON representation
AdminitY is a secure and modular admin panel built using Node.js, Express, Handlebars, and NeDB for database management
- Host: GitHub
- URL: https://github.com/alexy-os/adminity
- Owner: alexy-os
- Created: 2024-09-14T06:16:13.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-09-20T07:33:43.000Z (over 1 year ago)
- Last Synced: 2025-01-18T14:47:58.171Z (over 1 year ago)
- Topics: admin, admin-dashboard, admin-panel, auth, authentication, dashboard, dashboard-templates, handlebars, handlebars-js, handlebarsjs, miniapp, nedb, node, nodejs, tailwindcss, telegram, telegram-bot, telegramapp, webapp
- Language: Handlebars
- Homepage:
- Size: 26.4 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# AdminitY
**AdminitY** is a secure and modular admin panel built using **Node.js**, **Express**, **Handlebars**, and **NeDB** for database management. It is designed to handle user authentication, CRUD operations, and dynamic content rendering, providing a robust solution for admin interfaces.
### Features
- **User Management**: Easily create, update, and delete user records with different access levels (approved, lead).
- **Dynamic Content Rendering**: Handlebars templating engine for server-side rendering of views.
- **Session Management**: Secure session handling with user authentication via **Telegram**.
- **Ajax-Based CRUD Operations**: Handles operations asynchronously through RESTful endpoints.
- **NeDB Integration**: Lightweight, file-based database solution for managing user data.
- **Customizable UI**: Easily adaptable UI components with Handlebars, supporting conditional rendering and dynamic data display.
### Project Structure
```bash
.
├── assets/ # Static assets (CSS, JS, Images)
├── data/
│ └── users.db # NeDB database for storing user information
├── views/
│ └── pages/ # Handlebars templates for rendering pages
├── index.js # Main server entry point
└── config.js # Configuration file (e.g., session secret, bot usernames)
```
### Core Functionalities
1. **User Authentication via Telegram**
- The app uses a Telegram bot for login and verifies the username against an allowed list.
- It allows only authorized users to access the dashboard and settings.
2. **User Management**
- Add new users as either `approved` or `lead` types.
- Display a list of users, sorted based on the user type and other parameters like `timestamp` and `username`.
- Users can be edited or removed dynamically using the provided endpoints.
3. **CRUD Operations with NeDB**
- **Insert**, **update**, and **delete** operations are supported for user data.
- NeDB is used to store user records in a local `users.db` file.
- The app sorts and filters user data for different views like approved users and lead users.
4. **Session and Authentication Middleware**
- The application leverages Express sessions to store user data securely during their login session.
- Middleware ensures only authenticated users can access certain routes, like the dashboard or settings.
5. **Dynamic Content Rendering**
- Handlebars templates are used to render user-friendly and customizable web pages.
- Includes helper functions to format dates and conditionally display content based on data values.
### Setup
1. Clone the repository:
```bash
git clone https://github.com/your-repo/AdminitY.git
cd AdminitY
```
2. Install dependencies:
```bash
npm install
```
3. Configure environment variables in `config.js`:
- Set your session secret, allowed Telegram usernames, and bot username.
4. Start the server:
```bash
npm start
```
The app will run on port `3008` by default.
5. To use **ngrok** for local testing:
```bash
ngrok http 3008
```
The generated ngrok URL will be saved to `ngrok-url.txt` for external access.
### API Endpoints
- **GET /login**: Renders the login page for Telegram authentication.
- **POST /auth/telegram**: Authenticates users based on their Telegram credentials.
- **GET /dashboard**: Displays the admin dashboard for authorized users.
- **GET /users**: Lists approved users.
- **POST /users**: Adds a new user to the database.
- **POST /users/:id/delete**: Deletes an existing user.
### Future Enhancements
- Add support for more user roles and access levels.
- Implement two-factor authentication for higher security.
- Expand database support to include MongoDB or PostgreSQL for larger-scale applications.