Skip to content

Small updates #3

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

Open
wants to merge 35 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
f0d3e6b
new little website
alecherryy Apr 17, 2024
e2ab3dd
update and fix all eslint
alecherryy Apr 17, 2024
35a30e1
remove unused stuff
alecherryy Apr 17, 2024
c508323
move font declaration
alecherryy Apr 17, 2024
18f46fc
remove .idea/ folder
alecherryy Apr 17, 2024
72bf88b
fix wrong homepage
alecherryy Apr 17, 2024
025d97f
fix broken homepage URL
alecherryy Apr 17, 2024
ea629db
clean up some stuff and adjust mobile styles
alecherryy Apr 24, 2024
320c857
feat: update imagery and mobile styles
alecherryy Apr 26, 2024
48a58b9
add mobile menu and logic
alecherryy Apr 26, 2024
b18fd58
remove weird component
alecherryy Apr 26, 2024
ca4cc46
fix header styles
alecherryy Apr 26, 2024
798f674
remove unecessary util
alecherryy Apr 26, 2024
1f9103a
fix mobile overflow
alecherryy Apr 26, 2024
880b960
small fixes and adjustments
alecherryy May 13, 2024
5084081
add markup support
alecherryy May 13, 2024
b900de2
chore: adjust code
alecherryy May 30, 2024
94118c6
update hero page
josibake May 13, 2024
57b7ca5
random changes
alecherryy Jun 1, 2024
d752830
add active state to menu
alecherryy Jun 2, 2024
4609bbf
more changes
alecherryy Jun 2, 2024
3b70f7b
add footer
alecherryy Jun 2, 2024
e3ef626
fix active link
alecherryy Jun 2, 2024
daa6d02
remove extra padding
alecherryy Jun 2, 2024
a6d7144
fix button
alecherryy Jun 3, 2024
309f28d
add footer content, update wording
josibake Jun 3, 2024
c9045bf
fix footer and clean up
alecherryy Jun 3, 2024
af78809
update some styles
alecherryy Jun 3, 2024
5157a7d
feat: add new page and navigation
alecherryy Jun 4, 2024
b05b8ba
fix broken hero
alecherryy Jun 4, 2024
e334564
consolidate menu styles
alecherryy Jun 5, 2024
6a0f05e
Merge pull request #1 from alecherryy/josie-wording-updates
alecherryy Jun 19, 2024
4ca6ab8
add meta stuff
alecherryy Jun 21, 2024
3642ee4
update alignment
alecherryy Jun 21, 2024
4a5a4a2
change homepage
alecherryy Jun 21, 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
21 changes: 21 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.js

# testing
/coverage

# production
/build

# misc
.DS_Store
.env
.env.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*
8 changes: 8 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
src/@generated
build
convertImportsCodemod.js
convertRelativeImports.js
createMapping.js
deleteIndex.js
testBenchmark.js
updateIndexImports.js
2 changes: 1 addition & 1 deletion CNAME
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2140.dev
2140-dev
29 changes: 29 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Getting Started with Create React App

This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).

## Available Scripts

In the project directory, you can run:

`npm start`

Runs the app in the development mode.\
Open [http://localhost:3000](http://localhost:3000) to view it in the browser.

The page will reload if you make edits.\
You will also see any lint errors in the console.

## Evaluations
### How much time did you end up spending on it?
I ended up spending 6-7 hours on it. Mostly because of later refactoring and general clean-up of the code. I also spent some time playing with styling, because I personally enjoy working with SCSS.

### What are some of the design decisions you made?
I took inspiration from some of the other currency exchange sites and decided to have default values already on first load; in this case, I chose EUR to USD. Additionally, I thought a basic, yet convenient feature would be a "Reverse/Swap" button to quickly and easily reverse the direction of the exchange rate.
Lastly, I did some reading and noticed the standard graph to represent exchange rates over time is a candlestick graph, so I decided to use this and not change the default green/red colors, since they are standard practice.

### What do you like about your implementation?
I like the use of React Hook form, it helps updating and managing input values; plus, I can easily access the form values from the parent component through the `useForm()` hook and pass them down to its children. I am also satisfied with the way I was able to organise the code. The `Result` and `FXChart` component are completely independent from one another and are in charge of calling their own API endpoints; any changes, deletions or improvements to one component will have no impact on the other.

### What would you improve next time?
I would definitely implement a more detailed and comprehensive error handling solution. I would also add a loader or some kind of UI element to let users know the data is being fetched. Lastly, I think it'd be nice to format the exchange rate float according to each user's local settings, i.e. 4.56 for US users and 4,56 for Europeans.
46 changes: 46 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
module.exports = {
parser: '@typescript-eslint/parser',
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:react/recommended',
],
parserOptions: {
ecmaFeatures: {
jsx: true,
},
ecmaVersion: 2018,
sourceType: 'module',
},
rules: {
// TypeScript specific rules
'@typescript-eslint/explicit-module-boundary-types': 'off',
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/no-unused-vars': 'warn',
'@typescript-eslint/no-explicit-any': 'on',
'@typescript-eslint/no-empty-function': 'off',

'react/jsx-filename-extension': [
'warn',
{ extensions: ['.jsx', '.tsx', '.ts'] },
], // Allow jsx syntax in .jsx and .tsx files
'react/jsx-props-no-spreading': 'off',
'react-hooks/rules-of-hooks': 'error',
'react-hooks/exhaustive-deps': 'warn',

// General JavaScript/ESLint rules
'no-console': 'warn',
eqeqeq: ['error', 'always'],
curly: 'error',
'no-trailing-spaces': 'error',
'eol-last': ['error', 'always'],
indent: ['error', 2, { SwitchCase: 1 }],
quotes: ['error', 'single'],
semi: ['error', 'always'], // Require
},
settings: {
react: {
version: 'detect',
},
},
};
1 change: 0 additions & 1 deletion index.html

This file was deleted.

Loading