{"id":18399209,"url":"https://github.com/marky-mark/euroexchange","last_synced_at":"2025-04-12T15:59:17.372Z","repository":{"id":12047747,"uuid":"14633596","full_name":"marky-mark/euroExchange","owner":"marky-mark","description":null,"archived":false,"fork":false,"pushed_at":"2013-11-25T09:57:34.000Z","size":384,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-16T02:44:57.387Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marky-mark.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-11-23T00:53:31.000Z","updated_at":"2014-05-11T21:06:16.000Z","dependencies_parsed_at":"2022-09-23T03:51:09.436Z","dependency_job_id":null,"html_url":"https://github.com/marky-mark/euroExchange","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marky-mark%2FeuroExchange","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marky-mark%2FeuroExchange/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marky-mark%2FeuroExchange/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marky-mark%2FeuroExchange/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marky-mark","download_url":"https://codeload.github.com/marky-mark/euroExchange/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248593239,"owners_count":21130308,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T02:26:07.142Z","updated_at":"2025-04-12T15:59:17.320Z","avatar_url":"https://github.com/marky-mark.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"euroExchange\n============\n\nTechnologies\n- Play 1.2.5\n- Had some classpath issues installing cassandra 1.1.12, installed 1.2 and all seems fine (this means the netflix version is slightly higher)\n- compiles using Java 1.6\n- No need to dump Cassandra.ddl, the application will create the column families on startup, the only thing needed (however)\n  is the keyspace needs to be created\n- Front end technologies d3 and jquery were used \n- Styling twiter bootstrap\n\nProject Overview\n\nI believe all the user stories have been met. The application lazy loads in an asynchronous manner. Data is displayed to the user on a graph.\nThe lazy loading part is probably the worst part in terms of efficiency for this project. I would prefer 1 thread only to fetch this data and store to database,\nalrough this means the api would be polled.\n\nThere are some missing tests e.g. testing some null cases and exception handling but the business logic is unit tested. I have also set up a few integration tests.\nThese tests are mainly missing due to time constraints. I would have liked to have some time to introduce a BDD framework like cucumber. Also maybe some jasmine to \ntest the frontend. Selenium webdriver could have also been used with cucumber to test button interactions.\n\nI decided not to use WS in play but use jersey client to map the XML to java onjects. Looking at it again, this is synchronous and WS can be asynchrous which would be\nvery useful. Maybe jersey could have been integrated with an Akka actor to perform asynchrously.\n\nInvestigated Kundera for an ORM to connect to cassandra, on documentation i did not see this framework supported for play \u003c 2.\nI don't like writing raw commands to the DB as there might be some risks with cql injection, this is how github and playstation got \nhacked!!\n\nTo Run\n1. Create Cassandra keyspace\n  -\u003ecqlsh\n  -\u003eCREATE KEYSPACE euro_exchange_rate WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };\n  \n2. Download dependencies\n  -\u003e play dependencies\n  \n3. Run the tests\n  -\u003e play auto-test\n  \n4. Run the application\n  -\u003e play run\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarky-mark%2Feuroexchange","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarky-mark%2Feuroexchange","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarky-mark%2Feuroexchange/lists"}