Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Movie Search App - Test Task #636

Open
wants to merge 21 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
77d84b3
Create React App
s0lena Jul 2, 2024
4477dcd
Set up search view: basic components and styling
s0lena Jul 3, 2024
2a129e7
Fetch and display movie list from API
s0lena Jul 4, 2024
1de6843
Add pagination for loading further movie batches
s0lena Jul 4, 2024
de76d42
Refactor code: Extract components and create custom hooks
s0lena Jul 4, 2024
f22c891
Add movie detail view: basic components and styling
s0lena Jul 5, 2024
352e31a
Enhance MovieDetails component: Integrate genre names and rating display
s0lena Jul 5, 2024
0969617
Fix console errors
s0lena Jul 5, 2024
c020cce
fix: remove unused useEffect in Form component
s0lena Jul 5, 2024
7b88bed
Create typescript-branch and initialize TypeScript
s0lena Jul 29, 2024
e30271c
Downgrade TypeScript to resolve dependency conflict
s0lena Jul 29, 2024
449a35e
Migrate index.jsx and App.jsx to TypeScript
s0lena Jul 29, 2024
8d51444
Convert Form component to TypeScript
s0lena Jul 29, 2024
f3825bf
Migrate components to TypeScript
s0lena Jul 29, 2024
c48e529
Migrate custom hooks to TypeScript
s0lena Jul 30, 2024
0f420f8
Fix hasMore state handling for empty query in useMovies hook
s0lena Jul 30, 2024
a72d7e1
Add 'no results' message and fallback image for missing movie poster
s0lena Jul 30, 2024
9f6ab35
Optimize performance using useMemo and useCallback hooks
s0lena Jul 31, 2024
48a6626
refactor: add return types to functional components for better type s…
s0lena Aug 1, 2024
9528656
refactor: Implement scroll position handling and move Form from Heade…
s0lena Aug 1, 2024
50bcc0b
fix: resolve horizontal shift caused by vertical scrollbar
s0lena Aug 1, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Would you like to **meet us**? Hear us talk or check if we're coming to your are

<a name='about-mews'/>

## 📚 About Mews
## 📚 About Mews

> We have revolutionised the way that hotels operate across all departments, through our mobile hotel management platform. We enable hoteliers to free themselves from boring administration (which we help automate) and rather focus on creating real customer experiences. Now live in 65+ countries in 2000+ hotels, we have truly started a revolution.

Expand All @@ -25,7 +25,7 @@ In the following sections, we'll try to answer frequently asked question that we

<a name='product'/>

### 🏨 Product
### 🏨 Product

- **What are the applications you are building?** The biggest part is the system for employees of hotels (receptionists, housekeepers, accountants, revenue managers, essentially everybody). For them, we also have native mobile applications with a subset of the functionality. Then we have web application for guests of the hotels and booking widget that hotels can put to their websites. We also offer hotels a kiosk application that they can put into their lobby and guests can checkin there. The full list of products is visible on our [website](https://www.mews.com/en/products).
- **What are your plans for the future?** We don't create fixed long term roadmaps. We plan and commit for the upcoming 4 months. And the rest of the roadmap represents rather a list of opportunities or problems we're going to solve most likely. You can check presentation of our CPO about [2021 roadmap](https://www.youtube.com/watch?v=Mr-FhBnouvg).
Expand All @@ -35,7 +35,7 @@ In the following sections, we'll try to answer frequently asked question that we

<a name='technology'/>

### 👨‍💻 Technology
### 👨‍💻 Technology

- **Which technologies do you use?** Generally, we try to use technology that is familiar to the development community. The benefit of using common technology is that everybody knows it well, and if not, they're able to Google the answers to their own questions. We also try to avoid building in-house solutions, but rather use third party services for responsibilities that are not directly related to our business (e.g. NewRelic for performance monitoring and logging, Sentry for error reporting, SendGrid for mailing). We want to focus on our product. Check our [Stackshare](https://stackshare.io/mews-systems/mews) to see a full list of what we use and check our [Platform documentation](https://www.mews.com/platform-documentation) for philosophy behind our platform and other things like security, disaster recovery, infrastructure etc.
- **What is the architecture of the backend?** The "executable" is a plain ASP.NET Core application with no extra caveats. We use Entity Framework with code-first approach, and we use Azure DB (a version of MSSQL) as our database. We run the application in Azure using App Services, so we don't need to manage the web servers or virtual machines. In general, there is data layer to access Azure DB, Azure Storage, Cosmos DB and Redis, business layer consisting of various components and a transactional layer (web, API, background jobs). BTW you can check our [Awesome Mews](https://github.com/MewsSystems/awesome-mews) reading list to see what is our philosophy, not only on backend. One speciality is functional programming, which we try to pragmatically use within our codebase, check out [this talk](https://www.youtube.com/watch?v=t20txMT82ws) for more detailed info.
Expand All @@ -47,7 +47,7 @@ In the following sections, we'll try to answer frequently asked question that we

<a name='teamwork'/>

### ⛹️ Teamwork
### ⛹️ Teamwork

- **Do you look for any specialists?** Both, specialists and "generic" developers are fine. We try to learn about their individual skills over time. Once we know what they enjoy working on, we try to embrace that and assign projects that each person is interested in. We have enough of a workload for the generic developers, which extends to all layers of our applications including new features and/or fixing bugs. At the moment, we have 15 teams with different responsibilities, so there are options to choose from. As we grow, we start to look for specialists especially in platform teams (infrastructure, security, tooling, design systems).
- **Which team will I work in?** That's hard to tell in advance. Basically there are two factors that we take into account. First, we look at past experience and preferences of the candidate. Second, we look at our own needs that are based on company strategy. And combine those two inputs to find the best match in one of 15 teams in the following divisions and families (segmented by customers they build products for):
Expand All @@ -68,7 +68,7 @@ In the following sections, we'll try to answer frequently asked question that we
- **Do you have any code style rules?** We believe in naming things the right way rather than adding comments. We have our own set of code style rules (99% of .NET FW rules on backend, AirBnb on frontend) that are run during any build. If your code violates any of the rules, no one will be able to build the project. The goal is to have a uniform code style throughout the whole platform. We also create our own analyzers for common mistakes that appear during code-reviews.
- **How often do you schedule refactoring?** We do not schedule refactoring. We consider it to be an integral part of development work. When implementing a new feature, it is important to verify that all of the team code and architecture quality standards are applied. The fixes and features should all be done properly from the beginning. Refactoring is also being done as part of technical roadmap which happens continuously, parallel to product roadmap.
- **How do you handle changes in the architecture of the system?** We try to introduce changes gradually while extending the capabilities of our system. For bigger changes, both on backend and frontend, we currently have platform teams whose only responsibility is to improve the system architecture, develop libraries and tools for other teams that are more focused on product. So platform teams prepare everything necessary in advance, so that product teams can adopt it in the upcoming period as part of their technical roadmap.
- **How many meetings would I have in a day?** That's up to team to decide, in most teams there is a short daily standup meeting. Once in a sprint, there is a grooming and planning meeting of the team (some teams have those merged). On Friday, there is a 30 minute meeting of all people in tech department with latest updates which then continues with 30 minute company-wide call, finishing with 30 minute company-wide question time. Averaging this out, it's like an hour a day.
- **How many meetings would I have in a day?** That's up to team to decide, in most teams there is a short daily standup meeting. Once in a sprint, there is a grooming and planning meeting of the team (some teams have those merged). On Friday, there is a 30 minute meeting of all people in tech department with latest updates which then continues with 30 minute company-wide call, finishing with 30 minute company-wide question time. Averaging this out, it's like an hour a day.
- **What is the company language?** In Prague office, where development is located, around 50% of people are Czech and the rest is mix of many other nationalities. Therefore most of the meetings and communication is held in English.

<a name='job'/>
Expand Down
17 changes: 17 additions & 0 deletions build/asset-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"files": {
"main.css": "/static/css/main.e6c13ad2.css",
"main.js": "/static/js/main.ac617484.js",
"static/js/453.b547a45e.chunk.js": "/static/js/453.b547a45e.chunk.js",
"static/media/logo.svg": "/static/media/logo.eb4603aab2cdefd38c4af6a6f7c6e07f.svg",
"index.html": "/index.html",
"static/media/arrow.svg": "/static/media/arrow.3509d459a3584da2c33101f930540127.svg",
"main.e6c13ad2.css.map": "/static/css/main.e6c13ad2.css.map",
"main.ac617484.js.map": "/static/js/main.ac617484.js.map",
"453.b547a45e.chunk.js.map": "/static/js/453.b547a45e.chunk.js.map"
},
"entrypoints": [
"static/css/main.e6c13ad2.css",
"static/js/main.ac617484.js"
]
}
Binary file added build/favicon.ico
Binary file not shown.
1 change: 1 addition & 0 deletions build/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>React App</title><script defer="defer" src="/static/js/main.ac617484.js"></script><link href="/static/css/main.e6c13ad2.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
Binary file added build/logo192.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added build/logo512.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
25 changes: 25 additions & 0 deletions build/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"short_name": "React App",
"name": "Create React App Sample",
"icons": [
{
"src": "favicon.ico",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon"
},
{
"src": "logo192.png",
"type": "image/png",
"sizes": "192x192"
},
{
"src": "logo512.png",
"type": "image/png",
"sizes": "512x512"
}
],
"start_url": ".",
"display": "standalone",
"theme_color": "#000000",
"background_color": "#ffffff"
}
3 changes: 3 additions & 0 deletions build/robots.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# https://www.robotstxt.org/robotstxt.html
User-agent: *
Disallow:
2 changes: 2 additions & 0 deletions build/static/css/main.e6c13ad2.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions build/static/css/main.e6c13ad2.css.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions build/static/js/453.b547a45e.chunk.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading