A modern, feature-rich web application for editing the JSON data of the Audiolibri.org project and submitting changes via GitHub pull requests.
- π Advanced Search & Filtering - Search by title, author, or genre with real-time results
- βοΈ Rich Text Editing - Edit all item details including synopsis, duration, narrator, etc.
- π Statistics Dashboard - View total, processed, pending, and modified items at a glance
- π Real-time Validation - Form validation with instant feedback
- π Pagination - Handle large datasets efficiently with customizable page sizes
- β Bulk Selection - Select multiple items for batch operations
- π§ Bulk Editing - Modify genre, language, and processing status for multiple items
- π€ Multiple Export Formats - Export data in JSON, CSV, or XML formats
- π Pull Request Creation - Automatically create PRs with detailed change summaries
- π Smart Commit Messages - Generate meaningful commit messages and PR descriptions
- πΏ Branch Management - Create unique branches for each set of changes
- β¨οΈ Keyboard Shortcuts - Quick access to common actions
- β©οΈ Undo Functionality - Easily revert recent changes
- π¨ Modern UI - Beautiful, responsive interface built with Bootstrap 5
- π± Mobile Responsive - Works seamlessly on all device sizes
- π Toast Notifications - Elegant feedback for user actions
- Node.js (v14 or higher)
- npm (v6 or higher)
- GitHub personal access token with repo permissions
-
Clone the repository:
git clone https://github.com/fabriziosalmi/audiolibri-editor.git cd audiolibri-editor
-
Install dependencies:
npm install
-
Configure environment: Create a
.env
file in the root directory:GITHUB_TOKEN=your_github_token_here REPO_OWNER=fabriziosalmi REPO_NAME=audiolibri PORT=3000
Replace
your_github_token_here
with your GitHub personal access token. -
Start the application:
npm start
-
Open your browser: Navigate to
http://localhost:3000
Run with auto-restart on file changes:
npm run dev
npm start
- Start the production servernpm run dev
- Start development server with nodemonnpm run docker:build
- Build Docker imagenpm run docker:run
- Run Docker containernpm run docker:compose
- Start with Docker Composenpm run docker:stop
- Stop Docker Compose services
docker-compose up -d
# Build the image
docker build -t audiolibri-editor .
# Run the container
docker run -p 3000:3000 --env-file .env audiolibri-editor
- Search for items using the search bar or filters
- Click on an item from the list to select it
- Edit the details in the right panel
- Click "Update Item" to save changes locally
- Use "Save Changes" to create a pull request
- Select multiple items using the checkboxes
- Click "Bulk Edit" in the navigation
- Choose fields to modify and set new values
- Apply changes to all selected items
- Click "Export" in the navigation
- Choose format (JSON, CSV, XML)
- Select data scope (all, filtered, or modified only)
- Download the generated file
Ctrl/Cmd + F
- Focus search barCtrl/Cmd + S
- Save changes (open PR modal)Ctrl/Cmd + Z
- Undo last change
- Bootstrap 5 - Modern, responsive UI framework
- Font Awesome - Comprehensive icon library
- Vanilla JavaScript - No framework dependencies, fast and lightweight
- Express.js - Minimal web framework
- Octokit - GitHub API integration
- Axios - HTTP client for external API calls
- Application fetches data from GitHub repository
- User makes changes through the web interface
- Changes are tracked locally in the browser
- When ready, changes are submitted via GitHub API
- New branch is created and pull request is opened
- Environment variables for sensitive data
- GitHub token validation on startup
- Input sanitization and validation
- No sensitive data stored in browser
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Port 3000 already in use:
# Change port in .env file or kill existing process
PORT=3001 npm start
GitHub API rate limits:
- Ensure you're using a personal access token
- Check token permissions include 'repo' scope
Docker permissions:
# On Linux, you may need to run with sudo or add user to docker group
sudo docker-compose up -d
If you encounter issues:
- Check the console for error messages
- Verify environment variables are set correctly
- Ensure GitHub token has proper permissions
- Check network connectivity to GitHub API
- Pagination - Handles large datasets efficiently
- Lazy loading - Only loads visible items
- Debounced search - Reduces API calls during typing
- Local caching - Stores data locally to minimize requests
Made with β€οΈ for the Audiolibri project