Add Home
commit
ef0d3abae8
857
Home.md
Normal file
857
Home.md
Normal file
@ -0,0 +1,857 @@
|
||||
# TECHNICAL CASE STUDY
|
||||
## WorkspaceHub — Coworking Reservation & Operations Platform
|
||||
|
||||
**Expected Duration:** 7–10 Days
|
||||
**Delivery Method:** Private Git Repository
|
||||
**Application Type:** Fullstack Web Application
|
||||
|
||||
---
|
||||
|
||||
## CONFIDENTIALITY AND REPOSITORY POLICY
|
||||
|
||||
This technical case study and all materials supplied as part of the recruitment process are intended solely for evaluation purposes.
|
||||
|
||||
The completed project must be stored in a **private repository**. The candidate may use a platform of their choice, including GitHub, GitLab, Bitbucket, or another Git hosting service, provided that the repository is not publicly accessible.
|
||||
|
||||
The repository must be shared only with the people specified during the recruitment process.
|
||||
|
||||
Publishing the source code, screenshots, project documents, or case-study details publicly during the evaluation process is not permitted.
|
||||
|
||||
---
|
||||
|
||||
# 1. PROJECT OVERVIEW
|
||||
|
||||
WorkspaceHub is a web-based coworking reservation and operations platform.
|
||||
|
||||
The platform allows individual users to discover coworking locations, inspect available workspace resources, and create reservations.
|
||||
|
||||
Coworking locations are managed by designated **Managers**, while platform-wide administration and operational visibility are provided through an **Admin Dashboard**.
|
||||
|
||||
The objective of this case study is not simply to implement CRUD screens.
|
||||
|
||||
The application should demonstrate the candidate's ability to design and implement a maintainable end-to-end system containing:
|
||||
|
||||
- a modern frontend application,
|
||||
- a backend API,
|
||||
- authentication and authorization,
|
||||
- relational data persistence,
|
||||
- business rules,
|
||||
- reservation and availability logic,
|
||||
- resource management,
|
||||
- administrative dashboards,
|
||||
- operational resource visibility,
|
||||
- appropriate error handling,
|
||||
- and maintainable software architecture.
|
||||
|
||||
The system should be usable from end to end.
|
||||
|
||||
---
|
||||
|
||||
# 2. TECHNOLOGY REQUIREMENTS
|
||||
|
||||
The candidate may choose one technology from each category.
|
||||
|
||||
### Frontend
|
||||
|
||||
- React
|
||||
- Next.js
|
||||
|
||||
### Backend
|
||||
|
||||
- NestJS
|
||||
- Java Spring Boot
|
||||
|
||||
### Database
|
||||
|
||||
- PostgreSQL
|
||||
- MariaDB
|
||||
|
||||
Alternative core frameworks or databases should not be substituted.
|
||||
|
||||
Libraries, ORMs, component libraries, state-management solutions, authentication libraries, build tools, and other supporting technologies may be selected by the candidate.
|
||||
|
||||
---
|
||||
|
||||
# 3. PROJECT STRUCTURE
|
||||
|
||||
The entire project must be delivered through **one Git repository**.
|
||||
|
||||
Frontend and backend applications must exist as separate top-level parts of the same repository.
|
||||
|
||||
Any additional project components such as scripts, documentation, Docker configuration, database migrations, or infrastructure configuration should also remain within the same repository.
|
||||
|
||||
The project should be reproducible by another developer using the instructions provided in the repository.
|
||||
|
||||
A live deployment is **not required**.
|
||||
|
||||
---
|
||||
|
||||
# 4. USER ROLES
|
||||
|
||||
WorkspaceHub must support three primary roles.
|
||||
|
||||
## 4.1 Customer
|
||||
|
||||
Customers are individual users looking for coworking resources.
|
||||
|
||||
A Customer should be able to:
|
||||
|
||||
- register and authenticate,
|
||||
- browse available coworking locations,
|
||||
- inspect location and resource information,
|
||||
- search or filter suitable workspaces,
|
||||
- check availability,
|
||||
- create reservations,
|
||||
- view their existing and previous reservations,
|
||||
- cancel reservations where allowed.
|
||||
|
||||
A Customer must not be able to access another customer's private reservation information or management functionality.
|
||||
|
||||
---
|
||||
|
||||
## 4.2 Manager
|
||||
|
||||
Managers operate coworking locations assigned to them by an Administrator.
|
||||
|
||||
Managers should be able to manage operational information related to their assigned location or locations, including:
|
||||
|
||||
- coworking location information,
|
||||
- working/opening hours,
|
||||
- reservable resources,
|
||||
- resource availability,
|
||||
- maintenance or temporary blocking periods,
|
||||
- reservations,
|
||||
- resource usage information.
|
||||
|
||||
A Manager must only be able to manage and observe locations assigned to that Manager.
|
||||
|
||||
Managers do not onboard themselves onto the platform.
|
||||
|
||||
Location and Manager assignments are controlled administratively.
|
||||
|
||||
---
|
||||
|
||||
## 4.3 Administrator
|
||||
|
||||
Administrators operate WorkspaceHub at platform level.
|
||||
|
||||
An Administrator should have access to global management functionality including:
|
||||
|
||||
- coworking locations,
|
||||
- Managers,
|
||||
- Customers,
|
||||
- resources,
|
||||
- reservations,
|
||||
- resource operational information,
|
||||
- platform-wide resource utilization information.
|
||||
|
||||
Administrative authorization must be enforced by the backend and must not depend solely on hiding frontend controls.
|
||||
|
||||
---
|
||||
|
||||
# 5. COWORKING LOCATIONS
|
||||
|
||||
WorkspaceHub supports multiple coworking locations.
|
||||
|
||||
Each location should contain enough information for Customers to understand the workspace and determine whether it is suitable for their reservation.
|
||||
|
||||
Locations should also define operational information such as opening hours and available workspace resources.
|
||||
|
||||
The exact persistence model and data organization are left to the candidate.
|
||||
|
||||
Administrators assign Managers to locations.
|
||||
|
||||
Managers may then manage the locations for which they are responsible.
|
||||
|
||||
---
|
||||
|
||||
# 6. RESERVABLE RESOURCES
|
||||
|
||||
The application must support **at least three distinct workspace resource types**.
|
||||
|
||||
The mandatory baseline should include the following concepts.
|
||||
|
||||
## 6.1 Hot Desk
|
||||
|
||||
Hot Desks represent a shared-capacity workspace.
|
||||
|
||||
Reservations are primarily **daily**.
|
||||
|
||||
Unlike an exclusive room, multiple Customers may reserve Hot Desk capacity for the same date as long as sufficient capacity remains.
|
||||
|
||||
For example:
|
||||
|
||||
```text
|
||||
Hot Desk Area
|
||||
|
||||
Total Capacity: 20
|
||||
|
||||
Already Reserved: 15
|
||||
New Request: 3
|
||||
|
||||
Result:
|
||||
Reservation can be accepted.
|
||||
```
|
||||
|
||||
However:
|
||||
|
||||
```text
|
||||
Total Capacity: 20
|
||||
|
||||
Already Reserved: 18
|
||||
New Request: 4
|
||||
|
||||
Result:
|
||||
Reservation must be rejected.
|
||||
```
|
||||
|
||||
The system must correctly calculate remaining capacity.
|
||||
|
||||
---
|
||||
|
||||
## 6.2 Meeting Room
|
||||
|
||||
Meeting Rooms represent exclusive resources.
|
||||
|
||||
Reservations are based on a **time interval**.
|
||||
|
||||
Two reservations for the same Meeting Room must not overlap.
|
||||
|
||||
For example:
|
||||
|
||||
```text
|
||||
Existing Reservation
|
||||
10:00 – 11:00
|
||||
|
||||
Requested Reservation
|
||||
10:30 – 11:30
|
||||
|
||||
Result:
|
||||
Reservation must not be accepted.
|
||||
```
|
||||
|
||||
Adjacent reservations that do not overlap may be accepted where other business rules allow them.
|
||||
|
||||
---
|
||||
|
||||
## 6.3 Private Office
|
||||
|
||||
Private Offices represent another exclusive workspace resource.
|
||||
|
||||
A Private Office should primarily support **daily reservation** rather than hourly Meeting Room-style usage.
|
||||
|
||||
A Private Office that has already been reserved for a date must not be simultaneously allocated to another Customer for the same period.
|
||||
|
||||
---
|
||||
|
||||
Candidates may introduce additional resource types if their implementation supports them appropriately.
|
||||
|
||||
Adding additional resource types is not required for completion of the case study.
|
||||
|
||||
---
|
||||
|
||||
# 7. RESOURCE STATUS AND AVAILABILITY
|
||||
|
||||
Resources must have an operational state.
|
||||
|
||||
At minimum, the system should distinguish between resources that are:
|
||||
|
||||
- active,
|
||||
- inactive,
|
||||
- under maintenance.
|
||||
|
||||
A resource that is inactive or unavailable due to maintenance must not accept reservations that conflict with its unavailable period.
|
||||
|
||||
Managers must also be able to define temporary blocking or maintenance periods.
|
||||
|
||||
For example:
|
||||
|
||||
```text
|
||||
Meeting Room A
|
||||
|
||||
Blocked Period:
|
||||
18 September
|
||||
13:00 – 17:00
|
||||
|
||||
Reason:
|
||||
Maintenance
|
||||
```
|
||||
|
||||
A Customer attempting to reserve that resource during the blocked period should not be allowed to complete the reservation.
|
||||
|
||||
Availability therefore depends on more than whether an existing reservation is present.
|
||||
|
||||
Depending on the resource type, the application may need to consider:
|
||||
|
||||
- location opening hours,
|
||||
- resource operational status,
|
||||
- maintenance/blocking periods,
|
||||
- existing reservations,
|
||||
- resource capacity,
|
||||
- requested number of users,
|
||||
- requested date or time interval.
|
||||
|
||||
How this logic is structured internally is left to the candidate.
|
||||
|
||||
---
|
||||
|
||||
# 8. CUSTOMER RESERVATION FLOW
|
||||
|
||||
The application should provide a complete Customer booking experience.
|
||||
|
||||
A typical flow may include:
|
||||
|
||||
```text
|
||||
Register / Login
|
||||
↓
|
||||
Browse Coworking Locations
|
||||
↓
|
||||
Search / Filter
|
||||
↓
|
||||
View Location
|
||||
↓
|
||||
Select Resource
|
||||
↓
|
||||
Select Date / Time / Capacity
|
||||
↓
|
||||
Check Availability
|
||||
↓
|
||||
Review Reservation
|
||||
↓
|
||||
Create Reservation
|
||||
↓
|
||||
Reservation Confirmation
|
||||
↓
|
||||
My Reservations
|
||||
```
|
||||
|
||||
The exact screen structure and navigation are left to the candidate.
|
||||
|
||||
No predefined UI design or wireframe will be supplied.
|
||||
|
||||
The resulting application should nevertheless provide a clear and usable experience.
|
||||
|
||||
---
|
||||
|
||||
# 9. SEARCH AND DISCOVERY
|
||||
|
||||
Customers must be able to browse available coworking locations and resources.
|
||||
|
||||
The application should provide meaningful filtering or search capabilities appropriate to the domain.
|
||||
|
||||
Examples may include criteria such as:
|
||||
|
||||
- location,
|
||||
- date,
|
||||
- resource type,
|
||||
- requested capacity,
|
||||
- availability.
|
||||
|
||||
Candidates may introduce additional filters where appropriate.
|
||||
|
||||
Search and filtering should operate against application data rather than being implemented only as static frontend behavior.
|
||||
|
||||
---
|
||||
|
||||
# 10. RESERVATION BUSINESS LOGIC
|
||||
|
||||
Reservation creation is one of the primary parts of this case study.
|
||||
|
||||
The backend must validate whether a requested reservation can actually be made.
|
||||
|
||||
Frontend validation alone is insufficient.
|
||||
|
||||
A reservation should only be accepted when all relevant business requirements are satisfied.
|
||||
|
||||
This includes correctly handling the difference between:
|
||||
|
||||
- capacity-based resources,
|
||||
- exclusive hourly resources,
|
||||
- exclusive daily resources.
|
||||
|
||||
The application must prevent invalid or conflicting reservations.
|
||||
|
||||
Reservation logic should also appropriately account for resource availability and location operating conditions.
|
||||
|
||||
The candidate may define reasonable additional reservation and cancellation rules.
|
||||
|
||||
Such decisions should be documented briefly in the project documentation.
|
||||
|
||||
---
|
||||
|
||||
# 11. RESERVATION LIFECYCLE
|
||||
|
||||
Reservations should have a meaningful lifecycle rather than existing only as static records.
|
||||
|
||||
The candidate should define appropriate reservation states and rules for transitions between those states.
|
||||
|
||||
At minimum, the system must support the concepts required to distinguish active reservations from cancelled reservations.
|
||||
|
||||
Other lifecycle concepts may be introduced where they improve the implementation.
|
||||
|
||||
Invalid state transitions should be prevented.
|
||||
|
||||
The candidate is expected to make reasonable business decisions and document important assumptions.
|
||||
|
||||
---
|
||||
|
||||
# 12. PRICING
|
||||
|
||||
Each reservable resource should have pricing appropriate to its reservation model.
|
||||
|
||||
For example:
|
||||
|
||||
- Hot Desk pricing may depend on days and number of people.
|
||||
- Meeting Room pricing may depend on reserved time.
|
||||
- Private Office pricing may depend on the number of reserved days.
|
||||
|
||||
The backend must calculate the authoritative reservation price.
|
||||
|
||||
The application must not rely on a total price supplied by the frontend.
|
||||
|
||||
For example:
|
||||
|
||||
```text
|
||||
Meeting Room
|
||||
Price: 20 / hour
|
||||
|
||||
Reservation:
|
||||
09:00 – 11:30
|
||||
|
||||
Calculated Duration:
|
||||
2.5 hours
|
||||
|
||||
Calculated Total:
|
||||
50
|
||||
```
|
||||
|
||||
No real payment-provider integration is required.
|
||||
|
||||
Payment processing is outside the mandatory scope.
|
||||
|
||||
---
|
||||
|
||||
# 13. MANAGER OPERATIONS
|
||||
|
||||
Managers must be able to operate the coworking locations assigned to them.
|
||||
|
||||
The management interface should allow a Manager to perform the essential operations required to keep a location functioning.
|
||||
|
||||
This includes resource configuration, operational status management, reservations, availability, and temporary resource restrictions.
|
||||
|
||||
The Manager should also have visibility into how resources in their assigned locations are currently being used.
|
||||
|
||||
Manager data must be restricted to the Manager's assigned locations.
|
||||
|
||||
---
|
||||
|
||||
# 14. ADMIN DASHBOARD
|
||||
|
||||
WorkspaceHub must contain an administrative dashboard.
|
||||
|
||||
The dashboard should provide both management capabilities and useful operational information.
|
||||
|
||||
It should not simply be a collection of unrelated CRUD forms.
|
||||
|
||||
The Administrator should be able to gain a meaningful overview of the current state of the WorkspaceHub platform.
|
||||
|
||||
---
|
||||
|
||||
# 15. RESOURCE OPERATIONAL VISIBILITY
|
||||
|
||||
An important objective of the Admin Dashboard is to provide visibility into coworking resource usage.
|
||||
|
||||
This refers to **business/resource monitoring**, not DevOps infrastructure monitoring.
|
||||
|
||||
The dashboard should allow an Administrator to understand information such as:
|
||||
|
||||
- overall resource availability,
|
||||
- active/inactive/maintenance resources,
|
||||
- currently occupied resources,
|
||||
- remaining Hot Desk capacity,
|
||||
- current and upcoming reservations,
|
||||
- resource utilization,
|
||||
- location-level resource usage,
|
||||
- maintenance and blocked resources.
|
||||
|
||||
For example:
|
||||
|
||||
```text
|
||||
RESOURCE OVERVIEW
|
||||
|
||||
Total Resources 42
|
||||
Active 36
|
||||
Maintenance 4
|
||||
Inactive 2
|
||||
|
||||
Meeting Rooms Occupied
|
||||
7 / 12
|
||||
|
||||
Hot Desk Utilization
|
||||
68%
|
||||
```
|
||||
|
||||
The exact visualization is left to the candidate.
|
||||
|
||||
---
|
||||
|
||||
# 16. RESOURCE UTILIZATION
|
||||
|
||||
The Admin Dashboard should provide basic utilization information calculated from actual system data.
|
||||
|
||||
The purpose is to demonstrate that the candidate can transform transactional application data into useful operational information.
|
||||
|
||||
Examples could include:
|
||||
|
||||
```text
|
||||
Most Utilized Resources
|
||||
|
||||
Meeting Room A 82%
|
||||
Hot Desk Area 71%
|
||||
Private Office B 58%
|
||||
```
|
||||
|
||||
or aggregated information such as:
|
||||
|
||||
```text
|
||||
Location A
|
||||
Resource Utilization: 74%
|
||||
|
||||
Location B
|
||||
Resource Utilization: 51%
|
||||
```
|
||||
|
||||
The candidate should determine a reasonable definition of utilization for the different resource types.
|
||||
|
||||
The implementation and calculation strategy should be documented where the chosen behavior is not immediately obvious.
|
||||
|
||||
---
|
||||
|
||||
# 17. MANUAL DATA REFRESH
|
||||
|
||||
Resource monitoring information must be refreshable without requiring the Administrator or Manager to reload the entire browser page.
|
||||
|
||||
At least one clear manual refresh mechanism must be available for operational dashboard information.
|
||||
|
||||
For example:
|
||||
|
||||
```text
|
||||
Resource Overview [Refresh]
|
||||
|
||||
Active Occupied Maintenance
|
||||
32 14 3
|
||||
```
|
||||
|
||||
Activating the refresh action should request current data from the backend and update the relevant interface.
|
||||
|
||||
Appropriate user feedback should be provided while refreshing or when a refresh fails.
|
||||
|
||||
Automatic real-time updates are **not mandatory**.
|
||||
|
||||
---
|
||||
|
||||
# 18. AUTHENTICATION AND AUTHORIZATION
|
||||
|
||||
The application must implement authentication.
|
||||
|
||||
Authentication must be backed by the server.
|
||||
|
||||
Credentials must be handled securely and passwords must not be stored in plain text.
|
||||
|
||||
Authorization rules must also be enforced server-side.
|
||||
|
||||
Examples include:
|
||||
|
||||
- Customers cannot access other Customers' reservations.
|
||||
- Managers cannot manage locations assigned to another Manager.
|
||||
- Customers cannot access Manager or Admin operations.
|
||||
- Managers cannot gain platform-wide administrative access.
|
||||
- Administrator functionality must require appropriate authorization.
|
||||
|
||||
The exact authentication mechanism is left to the candidate.
|
||||
|
||||
---
|
||||
|
||||
# 19. DATA PERSISTENCE AND MODELLING
|
||||
|
||||
All important application information must be persisted using either PostgreSQL or MariaDB.
|
||||
|
||||
The candidate is responsible for designing an appropriate relational data model based on the requirements in this document.
|
||||
|
||||
The data model should correctly support:
|
||||
|
||||
- user roles and ownership,
|
||||
- coworking locations,
|
||||
- resources,
|
||||
- availability,
|
||||
- reservations,
|
||||
- pricing,
|
||||
- maintenance/blocking,
|
||||
- resource usage information.
|
||||
|
||||
No predefined database schema is provided.
|
||||
|
||||
Database structure, relationships, constraints, indexing decisions, and persistence approach form part of the technical assessment.
|
||||
|
||||
The project should contain a practical method for initializing the database and providing enough sample data to demonstrate the application.
|
||||
|
||||
---
|
||||
|
||||
# 20. BACKEND ENGINEERING EXPECTATIONS
|
||||
|
||||
The backend should be structured as maintainable application code rather than a collection of tightly coupled handlers.
|
||||
|
||||
The project must demonstrate:
|
||||
|
||||
- Object-Oriented Programming principles,
|
||||
- SOLID principles,
|
||||
- appropriate separation of responsibilities,
|
||||
- reusable business logic,
|
||||
- input validation,
|
||||
- predictable error handling,
|
||||
- authorization enforcement,
|
||||
- maintainable configuration management.
|
||||
|
||||
Business logic such as reservation validation, availability, pricing, and authorization should not be duplicated unnecessarily.
|
||||
|
||||
Environment-specific configuration and sensitive values should not be hardcoded directly into source code.
|
||||
|
||||
Candidates are free to determine the internal architecture.
|
||||
|
||||
---
|
||||
|
||||
# 21. FRONTEND ENGINEERING EXPECTATIONS
|
||||
|
||||
The frontend must provide a usable end-to-end interface for the required roles.
|
||||
|
||||
The implementation should demonstrate appropriate handling of:
|
||||
|
||||
- navigation,
|
||||
- authentication state,
|
||||
- authorization-aware screens,
|
||||
- forms,
|
||||
- validation feedback,
|
||||
- server errors,
|
||||
- loading states,
|
||||
- empty states,
|
||||
- manual data refresh,
|
||||
- data tables or suitable administrative views,
|
||||
- Customer reservation interactions.
|
||||
|
||||
The frontend must interact with the implemented backend rather than relying on hardcoded application data for the primary workflows.
|
||||
|
||||
Frontend structure, component organization, styling approach, data-fetching approach, and state-management strategy are left to the candidate.
|
||||
|
||||
---
|
||||
|
||||
# 22. ERROR HANDLING
|
||||
|
||||
The system should handle predictable failure cases cleanly.
|
||||
|
||||
Examples include:
|
||||
|
||||
- invalid login information,
|
||||
- inaccessible resources,
|
||||
- invalid reservation requests,
|
||||
- unavailable resources,
|
||||
- reservation conflicts,
|
||||
- insufficient resource capacity,
|
||||
- invalid user input,
|
||||
- unauthorized operations,
|
||||
- backend or network errors.
|
||||
|
||||
Errors should produce meaningful application behavior rather than unhandled exceptions or broken screens.
|
||||
|
||||
Technical details that should not be exposed to end users should remain appropriately protected.
|
||||
|
||||
---
|
||||
|
||||
# 23. CODE QUALITY
|
||||
|
||||
Code quality is an important part of the evaluation.
|
||||
|
||||
Candidates are expected to produce code that another developer could reasonably understand and continue developing.
|
||||
|
||||
Attention should be given to:
|
||||
|
||||
- meaningful naming,
|
||||
- manageable class/function/component sizes,
|
||||
- separation of responsibilities,
|
||||
- avoiding unnecessary duplication,
|
||||
- appropriate abstractions,
|
||||
- consistent coding conventions,
|
||||
- dependency management,
|
||||
- project organization,
|
||||
- maintainability.
|
||||
|
||||
Completing more features does not compensate for an unnecessarily difficult-to-maintain implementation.
|
||||
|
||||
---
|
||||
|
||||
# 24. AI TOOL USAGE
|
||||
|
||||
Use of AI-assisted development tools is **fully permitted**.
|
||||
|
||||
Candidates may use tools such as coding assistants, large language models, IDE assistants, or other AI-based development services.
|
||||
|
||||
AI usage does not negatively affect the evaluation.
|
||||
|
||||
However, candidates must include a short section in the project documentation explaining:
|
||||
|
||||
- which AI tools were used,
|
||||
- approximately what they were used for.
|
||||
|
||||
A short explanation is sufficient.
|
||||
|
||||
For example:
|
||||
|
||||
```text
|
||||
AI Usage
|
||||
|
||||
GitHub Copilot:
|
||||
Used for code completion and repetitive DTO/component generation.
|
||||
|
||||
ChatGPT:
|
||||
Used to discuss reservation conflict edge cases and improve README wording.
|
||||
```
|
||||
|
||||
Candidates should be prepared to explain the submitted implementation and technical decisions regardless of whether AI tools were used.
|
||||
|
||||
---
|
||||
|
||||
# 25. README REQUIREMENTS
|
||||
|
||||
A `README.md` must be included in the repository.
|
||||
|
||||
It should provide sufficient information for another developer to understand, install, and run the application.
|
||||
|
||||
At minimum, documentation should explain:
|
||||
|
||||
- project purpose,
|
||||
- technology choices,
|
||||
- prerequisites,
|
||||
- environment configuration,
|
||||
- database setup,
|
||||
- frontend startup,
|
||||
- backend startup,
|
||||
- how to access/test the required roles,
|
||||
- important business assumptions,
|
||||
- significant architectural decisions,
|
||||
- known limitations,
|
||||
- AI tools used during development.
|
||||
|
||||
Setup instructions should be reproducible.
|
||||
|
||||
---
|
||||
|
||||
# 26. OPTIONAL IMPROVEMENTS
|
||||
|
||||
Candidates are welcome to extend the project beyond the mandatory requirements.
|
||||
|
||||
Additional functionality or engineering improvements may be considered positively when they are relevant, correctly implemented, and do not reduce the quality of the mandatory functionality.
|
||||
|
||||
Examples of possible areas include:
|
||||
|
||||
- automated tests,
|
||||
- Docker / Docker Compose,
|
||||
- API documentation,
|
||||
- live deployment,
|
||||
- automated dashboard updates,
|
||||
- WebSocket or Server-Sent Events,
|
||||
- more advanced search/filtering,
|
||||
- pagination,
|
||||
- additional resource types,
|
||||
- richer reservation workflows,
|
||||
- audit/activity tracking,
|
||||
- notification mechanisms,
|
||||
- caching,
|
||||
- CI/CD,
|
||||
- DevOps observability,
|
||||
- other technically justified improvements.
|
||||
|
||||
This list is not a required implementation checklist.
|
||||
|
||||
Candidates are free to select improvements that they believe provide meaningful value.
|
||||
|
||||
---
|
||||
|
||||
# 27. OUT OF SCOPE
|
||||
|
||||
To keep the assignment appropriate for the expected timeframe, the following are not required:
|
||||
|
||||
- real payment-provider integration,
|
||||
- mobile applications,
|
||||
- microservice architecture,
|
||||
- Kubernetes,
|
||||
- external identity providers,
|
||||
- production monitoring infrastructure,
|
||||
- real-time communication infrastructure,
|
||||
- complex geographic/map functionality,
|
||||
- production cloud deployment.
|
||||
|
||||
Candidates may implement additional functionality voluntarily where appropriate.
|
||||
|
||||
---
|
||||
|
||||
# 28. DELIVERY REQUIREMENTS
|
||||
|
||||
The completed work must be submitted through a **private Git repository** on a Git platform selected by the candidate.
|
||||
|
||||
The repository must contain the complete frontend and backend source code.
|
||||
|
||||
The repository should preserve meaningful development history through Git commits.
|
||||
|
||||
Before submission, access to the private repository must be granted to the reviewers specified during the recruitment process.
|
||||
|
||||
The final submission must:
|
||||
|
||||
1. contain the complete application,
|
||||
2. contain the required README documentation,
|
||||
3. include all configuration examples necessary to run the project without exposing secrets,
|
||||
4. include a method to initialize required database structures and sample data,
|
||||
5. allow the reviewer to run and evaluate the primary application flows.
|
||||
|
||||
---
|
||||
|
||||
# 29. EVALUATION FOCUS
|
||||
|
||||
The case study will be evaluated as an **overall Fullstack engineering exercise**.
|
||||
|
||||
Evaluation will consider the quality of the complete solution, including:
|
||||
|
||||
- functional completeness,
|
||||
- frontend implementation,
|
||||
- backend implementation,
|
||||
- relational data modelling,
|
||||
- reservation and availability logic,
|
||||
- authentication and authorization,
|
||||
- resource management,
|
||||
- Admin/Manager operational dashboards,
|
||||
- business-rule correctness,
|
||||
- architecture,
|
||||
- OOP and SOLID application,
|
||||
- code quality,
|
||||
- error handling,
|
||||
- maintainability,
|
||||
- usability,
|
||||
- documentation,
|
||||
- Git usage,
|
||||
- technical decisions.
|
||||
|
||||
The case study intentionally leaves certain implementation details undefined.
|
||||
|
||||
Candidates are expected to make reasonable engineering decisions where requirements do not specify an exact implementation and to briefly document significant assumptions.
|
||||
|
||||
The ability to explain these decisions during a technical discussion is considered part of the exercise.
|
||||
|
||||
---
|
||||
|
||||
# 30. COMPLETION EXPECTATION
|
||||
|
||||
The priority is a **working, maintainable end-to-end application**.
|
||||
|
||||
Candidates should prioritize completing the core WorkspaceHub workflow before implementing optional enhancements.
|
||||
|
||||
A smaller solution whose mandatory functionality is reliable and well structured is preferable to a larger solution containing many incomplete or unstable features.
|
||||
|
||||
The expected result should allow a reviewer to experience the application from multiple roles, create and manage coworking resources, make valid reservations, observe resource utilization, and verify that the required business constraints are enforced.
|
||||
Loading…
Reference in New Issue
Block a user