A comprehensive, reusable application management console built with React and AWS Cloudscape Design System. This application can handle both organization and event applications with a scalable, maintainable architecture.
- Dual Application Types: Supports both organization and event applications
- Comprehensive Table View: Sortable, filterable, and paginated application listing
- Detailed Application View: Complete application details with tabbed interface
- Status Management: Approve/reject applications with reason tracking
- Comment System: Add and view comments on applications
- File Management: Upload and download files for each application
- Responsive Design: Mobile-friendly interface using Cloudscape Design System
- Reusable Components: Built for scalability and maintainability
- Mock API Layer: Simulated API calls with realistic data structure
- Type-based Routing: URL parameters for different application types
- State Management: React hooks for efficient state handling
- Error Handling: Comprehensive error states and loading indicators
- React 18 - Modern React with hooks
- AWS Cloudscape Design System - Professional UI components
- React Router DOM - Client-side routing
- Vite - Fast build tool and dev server
- Tailwind CSS - Utility-first CSS framework
- Node.js (v16 or higher)
- npm or yarn
-
Clone the repository
-
Navigate to the project directory
-
Install dependencies:
npm install
-
Start the development server:
npm run dev
-
Open your browser and navigate to
http://localhost:5173
src/
├── Pages/
│ ├── ApplicationConsole.jsx # Main application listing page
│ └── ApplicationDetails.jsx # Detailed application view
├── data/
│ └── Mock.js # Mock API and sample data
├── App.jsx # Main app component with routing
├── main.jsx # Entry point with theming
└── index.css # Global styles
- Switch Types: Use the dropdown to switch between organization and event applications
- Search: Filter applications by name, applicant, or ID
- View Details: Click on an application ID or use the "View Selected" button
- Pagination: Navigate through large lists of applications
- Details Tab: View application information and form responses
- Comments Tab: Add comments and view comment history
- Files Tab: Upload and download files
- Status Management: Approve or reject applications with optional reasons
The application follows a defined API contract structure:
{
id: string,
name: string,
status: 'pending' | 'approved' | 'rejected',
submittedAt: string (ISO date),
type: 'organization' | 'event',
applicantEmail: string,
applicantName: string,
organizationName: string,
formResponse: object,
comments: array,
files: array,
createdAt: string (ISO date),
updatedAt: string (ISO date)
}getOrganizationApplications()- Get pending organization applicationsgetEventApplications()- Get all event applicationsgetApplicationById(id)- Get specific application detailsupdateApplicationStatus(id, status, comment)- Update application statusaddComment(id, comment)- Add comment to applicationuploadFile(id, file)- Upload file for applicationdownloadFile(fileId)- Download file
- Add new data structure to
Mock.js - Update the API functions
- Modify the type switching logic in
ApplicationConsole.jsx
- Global styles:
src/index.css - Cloudscape theming:
src/main.jsx - Component-specific styles use Cloudscape Design System tokens
The application automatically renders form responses as key-value pairs. For more sophisticated rendering:
- Modify the
renderFormResponse()function inApplicationDetails.jsx - Add type-specific rendering logic
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
- ESLint configuration included
- Prettier recommended for code formatting
- Follow React best practices and hooks patterns
-
Build the application:
npm run build
-
Deploy the
distfolder to your hosting service -
Configure your web server to serve
index.htmlfor all routes (SPA routing)
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License.
- AWS Cloudscape Design System for the excellent component library
- React team for the amazing framework
- Vite team for the fast build tool