{"id":25735628,"url":"https://github.com/bkeating/my-nm-demo","last_synced_at":"2026-04-09T18:43:41.379Z","repository":{"id":39349549,"uuid":"216149175","full_name":"bkeating/my-nm-demo","owner":"bkeating","description":"A skills assessment demo I wrote as part of an interview process","archived":false,"fork":false,"pushed_at":"2023-01-04T22:58:52.000Z","size":1687,"stargazers_count":2,"open_issues_count":23,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-26T05:35:18.116Z","etag":null,"topics":["csv","expressjs","nodejs","reactjs","rest-api","skills-assessment","spa"],"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/bkeating.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":"2019-10-19T04:30:27.000Z","updated_at":"2025-02-24T09:19:17.000Z","dependencies_parsed_at":"2023-02-02T23:00:36.672Z","dependency_job_id":null,"html_url":"https://github.com/bkeating/my-nm-demo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bkeating/my-nm-demo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkeating%2Fmy-nm-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkeating%2Fmy-nm-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkeating%2Fmy-nm-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkeating%2Fmy-nm-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bkeating","download_url":"https://codeload.github.com/bkeating/my-nm-demo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkeating%2Fmy-nm-demo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265224095,"owners_count":23730336,"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":["csv","expressjs","nodejs","reactjs","rest-api","skills-assessment","spa"],"created_at":"2025-02-26T05:31:23.233Z","updated_at":"2026-04-09T18:43:36.350Z","avatar_url":"https://github.com/bkeating.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# My NM Demo App\n\n## Skills assessment description\n\nRequested on: Aug 28, 2018\n\n\u003e Please complete the following skills assessment:\n\u003e\n\u003e Develop a SPA application to collect following information:\n\u003e\n\u003e - Client First name, Last name, Gender, City, Street, State and Zip\n\u003e - Children (First name, Last name, Gender, Date of Birth)\n\u003e\n\u003e Application should allow to collect more than one child’s details (First \u003e name, Last name, Gender, Date of Birth)\n\u003e Build NodeJS REST microservice to save Client \u0026 Children information in a \u003e text file in CSV format\n\u003e SPA Application should send request to NodeJS REST microservice to save both \u003e Client \u0026 Children information in a CSV file\n\n## Getting Started\n\nThis project comes in two parts; a frontend and backend. The file structure was seeded using my favorite boilerplate project; `create-react-app`. This means most of the project's file structure and resources are for the frontend. The backend is fairly small. Just the `server.js` file at root.\n\n```\n$ cd /path/to/this/project\n$ yarn \u0026\u0026 yarn build \u0026\u0026 yarn server\n```\n\n1. Go to http://localhost:9000\n2. Fill in (or edit) form field values\n3. Click submit, POSTing to backend server\n4. Backend takes the payload and appends it to a CSV file\n\nYou can optionally fire up the frontend development server (part of `create-react-app`) with:\n\n```\n$ yarn start\n```\n\n## Things I didn't do (but if there was time...)\n\n- First check if CSV file exists. Create it if not present\n- server.js to be a little more DRY\n- Provide some basic unit tests\n- Rate limit form submissions\n- Check for existing records\n- Double-click prevention\n- Form field validation\n- Nicer looking lay out (:\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbkeating%2Fmy-nm-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbkeating%2Fmy-nm-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbkeating%2Fmy-nm-demo/lists"}