Skip to content

mlopezsoto/dynamodb_spring-boot_learningwithmykids

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Learning With My Kids

This is a simple set of REST endpoints providing basic functionality to store and retrieve information about activities that help members of a family achieve a "learning" goal.

The design of the database follows some of the patters expressed here:

Here is an example of the DynamoDB table: https://docs.google.com/spreadsheets/d/1wmnaqWdzVnjSVOqfkwL6l0B_hLI6aoTlyL5YDi5yb6I/edit?usp=sharing

Here is an image of the sample data structure:

Sample result of DynamoDB describe-table command:

 aws dynamodb describe-table --table-name LearningWithMyKids
{
    "Table": {
        "AttributeDefinitions": [
            {
                "AttributeName": "partitionKey",
                "AttributeType": "S"
            },
            {
                "AttributeName": "sortKey",
                "AttributeType": "S"
            }
        ],
        "TableName": "LearningWithMyKids",
        "KeySchema": [
            {
                "AttributeName": "partitionKey",
                "KeyType": "HASH"
            },
            {
                "AttributeName": "sortKey",
                "KeyType": "RANGE"
            }
        ],
        "TableStatus": "ACTIVE",
        "CreationDateTime": "2021-06-04T18:11:39.822000+10:00",
        "ProvisionedThroughput": {
            "LastDecreaseDateTime": "2021-06-04T18:12:44.019000+10:00",
            "NumberOfDecreasesToday": 0,
            "ReadCapacityUnits": 1,
            "WriteCapacityUnits": 1
        },
        "TableSizeBytes": 1963,
        "ItemCount": 23,
        "TableArn": "arn:aws:dynamodb:ap-southeast-2:321459183723:table/LearningWithMyKids",
        "TableId": "b81ea62c-4224-4832-abd2-e4f5eb61debb"
    }
}

The technology stack includes:

  • Java 8+
  • Spring Boot
  • Spring Data
  • DynamoDB
  • Lombok
  • Swagger

Running the application

You need to have a AWS DynamoDB table (and an AWS account of course) named LearningWithMyKids with a partition key named partitionKey and a sort key named sortKey. You also need to provide your AWS credentials in the file application.properties. After that, you can run the app as a regular Spring Boot Application. To run the integration tests you would need an extra table called TestLearningWithMyKids. You can also create a docker image using the included Dockerfile.

There is a Swagger UI that can be used to explore the API. i.e. localhost: http://localhost:8080/swagger-ui/

About

REST API providing services to manage family learning activities. Uses AWS DynamoDB and Spring Boot.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published