Submit social housing lettings and sales data (CORE)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
baarkerlounger 1ea0467811 Adjust radio button size based on number of answer options 3 years ago
.github/workflows Add ADR for Turbo Frame form submission flow (#21) 3 years ago
app Adjust radio button size based on number of answer options 3 years ago
bin Add application skeleton to repo 3 years ago
config Support multiple dividers per answer option set 3 years ago
db Add local authority section 3 years ago
doc/adr Add ADR for Turbo Frame form submission flow (#21) 3 years ago
lib Add application skeleton to repo 3 years ago
log Add application skeleton to repo 3 years ago
public Add application skeleton to repo 3 years ago
spec Refactor form definition to config file 3 years ago
storage Add application skeleton to repo 3 years ago
tmp Add application skeleton to repo 3 years ago
vendor Add application skeleton to repo 3 years ago
.browserslistrc Add application skeleton to repo 3 years ago
.dockerignore Add application skeleton to repo 3 years ago
.editorconfig Add application skeleton to repo 3 years ago
.env.example Avoid whitespace syntax mismatch between docker-compose and rails c 3 years ago
.gitignore Add simplecov 3 years ago
.overcommit.yml Add application skeleton to repo 3 years ago
.rspec Add application skeleton to repo 3 years ago
.rubocop.yml Add application skeleton to repo 3 years ago
.ruby-version Update Ruby version and Gov UK frontend component gem 3 years ago
Dockerfile Update Ruby version and Gov UK frontend component gem 3 years ago
Gemfile Add simplecov 3 years ago
Gemfile.lock Bump turbo and stimulus 3 years ago
LICENSE Initial commit 3 years ago
README.md Upstream uses select to mean dropdown and checkbox for... well checkboxes 3 years ago
Rakefile Add application skeleton to repo 3 years ago
babel.config.js Add application skeleton to repo 3 years ago
config.ru Add application skeleton to repo 3 years ago
docker-compose.yml Add application skeleton to repo 3 years ago
package-lock.json front end gems added - working example code still needed 3 years ago
package.json Add Stimulus 3 years ago
postcss.config.js Add application skeleton to repo 3 years ago
yarn.lock Add Stimulus 3 years ago

README.md

Data Collection App

This is the codebase for the Ruby/Rails app that will handle the submission of Lettings and Sales of Social Housing in England data.

Required Setup

Pre-requisites

  • Ruby
  • Rails
  • Postgres

Setup Quickstart

Copy the .env.example to .env and replace the database credentials with your local postgres user credentials.

Create the database rake db:create

Start the rails server

rails s

This starts the rails server on localhost:3000

or using Docker

docker-compose build
docker-compose run --rm app rails db:create
docker-compose up

This exposes the rails server on localhost:8080.

Note docker-compose runs the production docker image (RAILS_ENV=production) as the Dockerfile doesn't include development gems to keep the image size down.

Infrastructure

The cloud infrastructure running this application is set up using the infrastructure repository

Single log submission

The form for this is driven by a json file in /config/forms/{start_year}_{end_year}.json

The JSON should follow the structure:

{
  form_type: [lettings/sales]
  start_year: yyyy
  end_year: yyyy
  sections: {
    snake case section name string: {
      label: string,
      subsections: {
        snake case subsection name string: {
          label: string,
          pages: {
            snake case page name string: {
              header: string,
              description: string,
              questions: {
                snake case question name string: {
                  header: string,
                  hint_text: string,
                  type: [text / numeric / radio / checkbox / date ],
                  min: integer, (numeric only),
                  max: integer, (numeric only),
                  step: integer (numeric only),
                  answer_options: { (checkbox and radio only)
                    "0": string,
                    "1": string
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

Assumptions made by the format:

  • All forms have at least 1 section
  • All sections have at least 1 subsection
  • All subsections have at least 1 page
  • All pages have at least 1 question
  • The ActiveRecord case log model has a field for each question name (must match)
  • Text not required by a page/question such as a header or hint text should be passed as an empty string