An application directory (appD) is a structured repository of information about apps that can be used in an FDC3-enabled desktop. It provides a secure and efficient way of storing and managing metadata about apps in your ecosystem, with role-based access control and comprehensive API documentation. App Directory (https://fdc3.finos.org/docs/app-directory/overview) is a component of the FDC3 platform (https://fdc3.finos.org/docs/fdc3-intro).
To quickly get the app up and running, follow these steps:
-
Install the necessary dependencies:
npm install
-
Start the development server:
npm run dev
This will start the API server and the UI, both running on port 8080
. You can access the UI at http://localhost:8080/login
. API docs can be accessed at: http://localhost:8080/api-docs
.
- User authentication and authorization with JWT (RS256)
- Role-based access control (User, Admin, Editor, Desktop Agent)
- User and Application CRUD operations
- Application approval workflow
- Health monitoring endpoints
- MongoDB integration
- Environment-based configuration
- Seed data support
- Swagger API documentation
- Cross-platform compatibility (Windows, macOS, Linux)
- JWT-based authentication with RS256 algorithm
- Role-based access control (RBAC)
- Password hashing with bcrypt
- Request validation
- Error handling middleware
- CORS support
- Hot reload in development mode
- Environment-based configuration
- Comprehensive error logging
- Testing support
- Seed data generation
- Admin: Full system access
- Editor: Can manage applications and content
- User: Basic access to applications
- Desktop Agent: Special access for FDC3 desktop agents
- RESTful endpoints
- JSON payload support
- Search functionality
- Filtering capabilities
- Detailed error responses
- Rate limiting
- API versioning (v1, v2)
- MongoDB integration
- Schema validation
- Indexing for performance
- Node.js (v14 or higher)
- MongoDB
- npm or yarn
For comprehensive API documentation, please refer to the following markdown files in the docs/
folder:
Access the Swagger documentation at:
http://localhost:8080/api-docs
POST /v1/users/login # User login
POST /v1/users # Create user
GET /v1/users # Get all users (Admin only)
GET /v1/users/:email # Get user by email
PATCH /v1/users/:email # Update user (Admin/Editor)
DELETE /v1/users/:email # Delete user (Admin only)
PATCH /v1/users-approve # Approve/reject user (Admin only)
POST /api/v2/apps # Create application
GET /api/v2/apps # Get all applications
GET /api/v2/apps/{appId} # Get application by ID
PATCH /api/v2/apps/{appId} # Update application
DELETE /api/v2/apps/{appId} # Delete application
POST /api/v2/apps/search # Search applications
PATCH /api/v2/apps/approve # Approve/reject application
GET /v1/health # Basic health check
GET /v1/health/detailed # Detailed health status
GET /v1/health/live # Kubernetes liveness probe
GET /v1/health/ready # Kubernetes readiness probe
For local setup and development instructions, please refer to the Development Instructions file. For detailed information on the codebase, please refer to the Contributions file.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some 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.
- Project Maintainer: Vishal Gautam, Yousuf Ejaz Ahmad, Kushagra Asthana
- Email: [email protected], [email protected], [email protected]
- MongoDB Team
- Express.js Team
- Node.js Community