Git Product home page Git Product logo

isabella232 / culper Goto Github PK

View Code? Open in Web Editor NEW

This project forked from 18f/culper

0.0 0.0 0.0 71.4 MB

Culper is the foundation for NBIS eApp, supporting the SF-86, SF-85, and SF-85P. This is its source code and developer documentation. For background information and a demo video see https://github.com/18F/culper/wiki

License: Other

Go 13.98% Shell 0.17% JavaScript 82.73% HTML 0.05% CSS 1.81% API Blueprint 0.18% Makefile 0.18% TSQL 0.90%

culper's Introduction

Project Culper

Build Status codecov Code Climate Go Report Card

To create the applicant questionnaire for the National Background Investigation System (NBIS), the project team is employing a user-centered design approach leveraging key principles from the U.S. Digital Services Playbook:

  1. Understand what people need
  2. Address the whole experience, from start to finish
  3. Make it simple and intuitive

Culper is a responsive, mobile-friendly web application that applicants can use to fill out an SF-86, SF-85, or SF-85P. It forms the foundation of eApp, which is part of a larger NBIS information technology system.

Table of contents

Project Management

The project team primarily utilizes a private NBIS tool to administer user stories, defects, and tasks. Users of this open source code however are welcome to report issues via GitHub. Higher-level and non-development tasks are tracked in a Trello board.

Documentation for this software is maintained under docs and in a private wiki.

Development

Initial setup

Dependencies

For more information on licenses and third-party source code, use a tool like this one.

Clone all things

Clone the repository and cd into it:

git clone https://github.com/18F/culper
cd culper

Then to develop locally, create a .env file:

cp .env.example .env

For more information on the various settings, examples, and values please refer to the configuration documentation.

Tests

To do the initial setup and ensure that all tests pass locally:

make

Setting up the database for API integration tests

cd api
make reset-test-db

Pre-Commit Hooks

There are some pre commit hooks added using husky to run them. The pre-commit hooks are designed to run outside of docker for speed so you will need to have run yarn install outside the containers if you have not done so.

The hooks should automatically be applied once yarn install is complete, and will run the eslint and css lint rules on files changed that are staged for commit. Developers should apply lint fixes; however, specifiying --no-verify as an argument to git commit to bypass this check for temporary wip commits.

The eslint rules for the pre-commit hook will be using a stricter standard than the CI build to allow us to improve the code as we modify files while avoiding having to fix all the errors that would be generated if the rules were applied to the whole project immediately. Eventually we will want to apply the stricter rules to the CI build as well.

Running a local server

To run a local server, we are using docker containers leveraging the docker-compose tool via the command:

make run

Then direct your browser at http://localhost:8080. The access the site in development use the username test01 and password password01. If you make changes to frontend files, the site will automatically rebuild after ~10 seconds.

How it works

The Make target calls Docker Compose, which then runs containers for various parts of the system. Frontend assets are built from their own containers into the dist/ folder, which are then served by nginx. There is also an API backend (under api/) written in Go, which has a PostgreSQL database behind it. See the architecture diagram below.

See also: frontend docs.

Architectural diagram

eapparchitecture

There are several possible architectures which may be implemented. The diagram references one of those possible solutions and highlights the basic flow of data within the system. It also demonstrates integration with external systems (e.g. identity services) which are not part of this project but may be part of the overall system.

Additional

See advanced docs for more.

Tooling

See tools docs for more.

Formatting

Supported files are formatted using Prettier, though note this should only be done when a file is new or heavily modified. You should install Prettier for whatever editor you use.

Linters

  • Vim users: install syntastic
  • Emacs users: install flycheck

For command-line alternatives there are the following:

  • For CSS, run make lint-css
  • For JavaScript, run make lint-js
  • For HTML, html-lint which may be installed with yarn add html-lint

Contributing

Please refer to the contributing documentation.

culper's People

Contributors

adelevie avatar afeld avatar anthonygarvan avatar apburnes avatar bmallred avatar christopherhuii avatar ctro avatar dependabot[bot] avatar el-mapache avatar enummela avatar floresj avatar gidjin avatar hursey013 avatar joeignition avatar joshmfranklin avatar kdolan-soliel avatar kilbergr avatar leonged avatar macrael avatar mgwalker avatar michaelccata avatar owyche avatar pjsumm avatar ryanhofdotgov avatar sasiannlee avatar sirenaborracha avatar sjones-soliel avatar snyk-bot avatar sojeri avatar suzubara avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.