A comprehensive full-stack application for managing Linux distribution packages across web and mobile platforms.
DistroPackageManager is a multi-platform package management system consisting of:
- Backend API: RESTful API server for package management
- Web Frontend: Modern React-based user interface
- Mobile App: Flutter-based mobile application
The application enables users to manage, track, and distribute packages across different Linux distributions with a unified interface.
- Runtime: Node.js
- Framework: Express.js
- Database: MongoDB
- Authentication: JWT (JSON Web Tokens)
- Security: bcrypt for password hashing
- Task Scheduling: node-cron
- HTTP Client: axios
- Framework: React 18
- Language: TypeScript
- Build Tool: Vite
- UI/Styling: CSS
- Internationalization: Multi-language support (Arabic, English, French)
- Framework: Flutter
- Language: Dart
- Authentication: Firebase
- Platforms: Android, iOS, Linux, macOS, Windows, Web
DistroPackageManager/
βββ backend/ # Node.js Express API server
β βββ controllers/ # Business logic
β β βββ BackEndController.js
β β βββ NotificationController.js
β β βββ PackageController.js
β β βββ RepositoryController.js
β β βββ UserController.js
β βββ models/ # MongoDB schemas
β β βββ BackEndModel.js
β β βββ CounterModel.js
β β βββ NotificationModel.js
β β βββ PackageModel.js
β β βββ RepositoryModel.js
β β βββ SettingsModel.js
β β βββ UserModel.js
β βββ routes/ # API route definitions
β β βββ BackEndRoutes.js
β β βββ NotificationRoutes.js
β β βββ PackageRoutes.js
β β βββ RepositoryRoutes.js
β β βββ UserRoutes.js
β βββ server.js # Express server entry point
β βββ package.json # Dependencies
β
βββ frontend/ # React TypeScript web application
β βββ src/
β β βββ components/ # Reusable React components
β β β βββ linkInput/
β β β βββ sidebar/
β β βββ pages/ # Page components
β β β βββ backend-list/
β β β βββ dashboard/
β β β βββ homepage/
β β β βββ notifications-list/
β β β βββ package-list/
β β β βββ repository-list/
β β β βββ settings/
β β β βββ shell/
β β β βββ stats/
β β βββ translations/ # i18n files (AR, EN, FR)
β β βββ utils/ # Utility functions
β β βββ App.tsx # Main app component
β β βββ main.tsx # Entry point
β βββ vite.config.ts # Vite configuration
β βββ tsconfig.json # TypeScript configuration
β βββ package.json
β
βββ mobileapp/ # Flutter mobile application
β βββ lib/
β β βββ app/ # App configuration
β β β βββ AppColors.dart
β β β βββ AppConsts.dart
β β β βββ modules/
β β β βββ routes/
β β β βββ widgets/
β β βββ firebase_options.dart
β β βββ main.dart
β βββ android/ # Android-specific files
β βββ ios/ # iOS-specific files
β βββ windows/ # Windows-specific files
β βββ macos/ # macOS-specific files
β βββ linux/ # Linux-specific files
β βββ web/ # Web-specific files
β βββ pubspec.yaml # Flutter dependencies
β βββ analysis_options.yaml
β
βββ docker-compose.yml # Docker Compose configuration
βββ Dockerfile # Docker image definition
βββ README.md # This file
- Node.js (v16 or higher)
- npm or yarn
- MongoDB (local or Atlas)
- Flutter SDK (for mobile app)
- Docker & Docker Compose (optional, for containerized setup)
-
Navigate to the backend directory:
cd backend -
Install dependencies:
npm install
-
Create a
.envfile in the backend directory with your MongoDB connection string:DBURI=mongodb+srv://username:password@cluster.mongodb.net/DistroPackageManager?retryWrites=true&w=majority PORT=5001 -
Start the development server:
npm run dev
The backend will run on
http://localhost:5001
-
Navigate to the frontend directory:
cd frontend -
Install dependencies:
npm install
-
Start the development server:
npm run dev
The frontend will run on
http://localhost:5173(default Vite port)
-
Navigate to the mobile app directory:
cd mobileapp -
Install Flutter dependencies:
flutter pub get
-
Run the app:
flutter run
To run the entire stack with Docker Compose:
docker-compose upThis will start:
- Backend API on
http://localhost:5001 - MongoDB on
http://localhost:27017
- User Management: Registration, login, authentication
- Package Management: Create, read, update, delete packages
- Repository Management: Manage distribution repositories
- Notifications: System notifications for users
- Settings: Application configuration
- Backend Information: System metrics and health checks
- Dashboard: Overview and statistics
- Package List: Browse and manage packages
- Repository Management: Manage package repositories
- Notifications: View system notifications
- Backend List: Monitor backend instances
- Settings: User preferences and app settings
- Multi-language Support: Available in Arabic, English, and French
- Firebase Integration: Authentication and cloud services
- Cross-platform: Native support for Android, iOS, and web
- Responsive UI: Adaptive layouts for different screen sizes
- JWT Authentication: Secure token-based authentication
- Password Hashing: bcrypt for secure password storage
- CORS Support: Cross-Origin Resource Sharing configured
- Environment Variables: Sensitive data stored in
.envfiles
The frontend supports multiple languages:
- English (en)
- Arabic (ar)
- French (fr)
Translation files are located in frontend/src/translations/
- User: User accounts and authentication
- Package: Package information and metadata
- Repository: Distribution repositories
- Notification: User notifications
- Settings: Application settings
- BackEnd: Backend instance information
- Counter: Counters for tracking
Currently, no automated tests are configured. You can add tests using:
- Backend: Jest or Mocha
- Frontend: Vitest or Jest
- Mobile: Flutter testing framework
The backend provides REST endpoints for:
/api/users- User management/api/packages- Package operations/api/repositories- Repository management/api/notifications- Notification handling/api/backend- Backend information/api/settings- Settings management
npm run dev # Start development server with nodemon
npm run test # Run tests (not yet configured)npm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
npm run lint # Run ESLintflutter run # Run on connected device
flutter build apk # Build Android APK
flutter build ios # Build iOS app
flutter build web # Build web version- Ensure MongoDB is running and accessible
- Verify the connection string in your
.envfile - Check network connectivity to MongoDB Atlas (if using cloud)
- Backend default port: 5001
- Frontend default port: 5173
- MongoDB default port: 27017
Change ports in respective configuration files if needed.
- Ensure CORS is properly configured in the backend
- Check that frontend and backend URLs match in backend configuration
This project is licensed under the MIT License - see the LICENSE file for details.
For issues and questions, please open an issue in the repository or contact the development team.