{"id":19120528,"url":"https://github.com/javers/braincode2017","last_synced_at":"2026-02-28T01:35:14.405Z","repository":{"id":75572741,"uuid":"84743803","full_name":"javers/brainCode2017","owner":"javers","description":"Brain Code 2017 hackathon - JaVers meets DynamoDB","archived":false,"fork":false,"pushed_at":"2017-03-24T15:26:45.000Z","size":4,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-03T08:16:39.318Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"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/javers.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,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-03-12T17:27:50.000Z","updated_at":"2017-03-12T17:27:50.000Z","dependencies_parsed_at":"2023-06-06T22:45:25.949Z","dependency_job_id":null,"html_url":"https://github.com/javers/brainCode2017","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/javers%2FbrainCode2017","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javers%2FbrainCode2017/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javers%2FbrainCode2017/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javers%2FbrainCode2017/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/javers","download_url":"https://codeload.github.com/javers/brainCode2017/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240177052,"owners_count":19760308,"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-09T05:14:21.304Z","updated_at":"2026-02-28T01:35:14.368Z","avatar_url":"https://github.com/javers.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Brain Code 2017 \u0026mdash; JaVers meets DynamoDB hackathon\n\n\nYour goal is to write JaversRepository for [Amazon DynamoDB](https://aws.amazon.com/dynamodb/details/)\n\nIf you succeeded, your code will be merged to [JaVers](http://javers.org) master and released. \u003cbr/\u003e\nThousands of JaVers users will be able to use DynamoDB with JaVers.\nThis could be your first open source contribution. Awesome!\n\n## Intro\n\n**Amazon DynamoDB** is a NoSQL database with a ColumnFamily data model, similar to Cassandra. \n\n**JaVers** is an open source Java library for domain objects auditing.\nJaVers captures snapshots of domain objects (Entities) and persists them in a dedicated storage,\ncalled JaversRepository.\nHaving some snapshots saved in a JaversRepository, it's easy to browse objects' history \nand check how they looked like in the past. See [examples](http://javers.org/documentation/repository-examples/). \n\nSo far, JaVers provides two implementations of JaversRepository:\n\n* [SqlRepository](https://github.com/javers/javers/blob/master/javers-persistence-sql/src/main/java/org/javers/repository/sql/JaversSqlRepository.java),\n* [MongoRepository](https://github.com/javers/javers/blob/master/javers-persistence-mongo/src/main/java/org/javers/repository/mongo/MongoRepository.java).\n \nOur goal is to create the new implementation for DynamoDB.\n \n## Getting Started\n\n### DynamoDB\nFirts, try to [set up your DynamoDB](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SettingUp.html).\nIt's easier to start with DynamoDB running locally.\n\nWhen you run it locally, launch Razor SQL and:\n \n* type anything as AWS Access Key and AWS Secret Key\n* set Max Results per Query to 1000\n\nCreate `hello_world` table with hash attribute `my_id`.\n\nRun a few queries using unofficial,\nSQL-like, [query language](http://razorsql.com/docs/dynamodb_sql_support.html) for DynamoDB, created by Razor.\n\nInsert an item with `String` attribute:\n\n```\ninsert into hello_world (my_id, my_text_col) values ('hello', 'world')\n```\n\nInsert another item with `Number` attribute:\n\n```\ninsert into hello_world (my_id, my_int_col) values ('another', 5)\n```\n\nSelect all items: \n\n```\nselect * from hello_world\n```\n\nAs you can see, item attributes are added dynamically.\n\nSee:\n \n* [Introduction to DynamoDB Concepts](http://docs.aws.amazon.com/amazondynamodb/latest/gettingstartedguide/quick-intro.html)\n* [Getting Started - Java](http://docs.aws.amazon.com/amazondynamodb/latest/gettingstartedguide/GettingStarted.Java.html)\n* [Data Types](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes)\n* [DynamoDB Documentation](https://aws.amazon.com/documentation/dynamodb/)\n\n### JaVers development \n\nCheckout our github repository:\n\n```\ngit clone https://github.com/javers/javers.git\ncd javers\n```\n\nCheckout the `dynamoDb` branch:\n\n```\ngit checkout dynamoDb\n```\n\nBuild \u0026 test\n\n```\n./gradlew test\n\n```\n\nRun integration test for DynamoDB:\n\n```\n./gradlew javers-persistence-dynamodb:integrationTest\n```\n\n`DynamoDbSmokeTest` should be green. `DynamoRepositoryE2ETest` should be red since\n`DynamoRepository` is not implemented yet.\n\n## Your task\n\nYour task is to make all tests green. \n\n* Fork the JaVers repository to dedicated space provided by BrainCode mentors.\n* Implement `DynamoRepository`.\n* Work in a team? That's great, but don't push the whole team work at once. We want to see \n  individual commits of each team member.\n* Create a pull request to `dynamoDb` branch in the javers repositorty.\n* Make sure that CI is green, see [travis-ci.org](https://travis-ci.org/javers/javers/builds).\n* Ask other attendee for the code review.\n\n### How we will evaluate your solution\n\n* Code should be clean.\n* End-to-end test is already there, but what about unit tests? Do we need them?\n* Performance is the key. How you measure it?\n  Provide performance tests and runtime statistics for various types of JaVers queries.\n* Data model in DynamoDB should be well designed.\n  Take a look how we designed database schemas for MongoDB and SQL.\n\n## Required tools\n\n* Java8\n* Git\n* DynamoDB Downloadable Version\n  or DynamoDB Web Service (as a part of [AWS’s Free Tier](https://aws.amazon.com/free/)). \n* recommended IDE for Java: [IntelliJ IDEA](https://www.jetbrains.com/idea/) \u003cbr/\u003e\n* recommended GUI for DynamoDB: [Razor SQL](https://razorsql.com/)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavers%2Fbraincode2017","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjavers%2Fbraincode2017","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavers%2Fbraincode2017/lists"}