{"id":21262355,"url":"https://github.com/johanbrook/dat076-webapps","last_synced_at":"2026-07-03T01:33:25.587Z","repository":{"id":10406971,"uuid":"12562250","full_name":"johanbrook/dat076-webapps","owner":"johanbrook","description":"Project repo for the DAT076 (Web Applications) course at Chalmers University of Technology","archived":false,"fork":false,"pushed_at":"2017-01-08T05:18:26.000Z","size":2156,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-10-26T13:37:27.290Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"RichardWarburton/java-8-lambdas-exercises","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/johanbrook.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":"2013-09-03T11:38:49.000Z","updated_at":"2013-10-22T13:09:27.000Z","dependencies_parsed_at":"2022-09-22T10:11:20.005Z","dependency_job_id":null,"html_url":"https://github.com/johanbrook/dat076-webapps","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/johanbrook/dat076-webapps","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johanbrook%2Fdat076-webapps","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johanbrook%2Fdat076-webapps/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johanbrook%2Fdat076-webapps/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johanbrook%2Fdat076-webapps/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/johanbrook","download_url":"https://codeload.github.com/johanbrook/dat076-webapps/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johanbrook%2Fdat076-webapps/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35069183,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-02T02:00:06.368Z","response_time":173,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-21T04:58:14.403Z","updated_at":"2026-07-03T01:33:25.557Z","avatar_url":"https://github.com/johanbrook.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DAT076 Project\n\nA web app project for the [DAT076 course](http://www.cse.chalmers.se/edu/course/DAT076/) at Chalmers University of Technology built with the Java [Play framework](http://www.playframework.com/).\n\nFor the Web Applications course we have created an application, “Invoicer”, for managing invoices and their clients. Users can add, edit, and remove invoices and clients, as well as connecting different bank accounts to an invoice. The user can get notified in the UI about paid and overdue invoices, as well as sending out invoices and reminders to the clients with e-mail.\n\nA separate component based JSF project which acts as payment app for clients has been created, which communicates with the main application over the built-in REST API using JSON. Notifications about paid invoices are instantly appearing in real-time in the main application using Javascript and Server Sent Events (SSE). \n\n## JSF Client App\n\nA separate JSF app is located at [invoicer_client](https://github.com/henke101/invoicer_client). Imaginary clients can fetch invoices from the main JSON API and choose to pay them from the client app. Notifications are instantly shown in the main app interface.\n\n## Run\n\nIn the `invoicer` directory, run\n\n\tplay run\n\nand visit `http://localhost:9000`. No database setup is needed – an in memory H2 database is used.\n\n## API\n\nA JSON REST API is available at the following endpoints:\n\n\t# Invoices\n\n\tGET\t\t\t/invoices\t\t\t\t\t\t# Get all invoices\n\tPOST\t\t/invoices\t\t\t\t\t\t# Create new invoice\n\n\tGET\t\t\t/invoices/:id\t\t\t\t# Get invoice by ID\n\tPUT\t\t\t/invoices/:id\t\t\t\t# Update invoice by ID\n\tDELETE\t/invoices/:id\t\t\t\t# Delete invoice by ID\n\tPUT\t\t\t/invoices/:id/star\t# Toggle star on invoice by ID\n\n\tGET\t\t\t/invoices/starred\t\t# Get all starred invoices\n\n\tPOST\t\t/invoices/:id/send\t# Send the invoice specified by ID by email to its client\n\tPOST\t\t/invoices/:id/reminder\t# Send a reminder of invoice ID by email to its client\n\n\t# Bank Accounts\n\n\tGET\t\t\t/accounts\t\t\t\t\t# Get all accounts\n\tPOST\t\t/accounts\t\t\t\t\t# Create new account\n\n\tGET\t\t\t/accounts/:id\t\t\t# Get account by ID\n\tPUT\t\t\t/accounts/:id\t\t\t# Update account by ID\n\n\t# Clients\n\n\tGET\t\t\t/clients\t\t\t\t\t# Get all clients\n\tPOST\t\t/clients\t\t\t\t\t# Create new client\n\n\tGET\t\t\t/clients/:id\t\t\t# Get client by ID\n\tPUT\t\t\t/clients/:id\t\t\t# Update client by ID\n\tDELETE\t/clients/:id\t\t\t# Delete client by ID\n\n\tPOST\t\t/clients/:id/send\t# Send all client's (specified by ID) invoices to its email\n\n\tGET\t\t\t/clients/:name/invoices\t# Get all invoices by client name\n\n\t# Users\n\n\tGET\t\t/me\t\t\t\t\t\t\t\t# Get currently logged in user\n\tPOST\t/user\t\t\t\t\t\t\t# Create new user\n\n\t# Paid invoices stream\n\n\tGET\t\t/invoices/paid\t\t# Listen for incoming paid invoices, data payload as JSON string\n\nSome endpoints may need session authentication.\n\n## Develop\n\nAlways use the `develop` branch as trunk, and use feature/bug branches as needed. `develop` is thus considered unstable and `master` is stable.\n\nSample workflow when starting a new coding session:\n\n1. Do a `git pull` on `develop`.\n2. `checkout` your dev branch and rebase with `develop`.\n3. Code.\n\nBefore pushing to `develop`, do the following:\n\n1. Do a `git pull` on `develop`.\n2. `checkout` your dev branch and rebase with `develop`. Fix any merge conflicts *locally in your local dev branch* (not `develop`).\n3. `git checkout develop` and merge with your dev branch.\n4. Push to `develop`.\n\n**Only push to `master` when having stable working builds** (they *should* pass all tests).\n\n## Tests\n\n### Play tests\n\nTests reside in the `tests` package. Run with:\n\n\tplay tests\n\n### Javascript tests\n\nThe JS tests are built with [Mocha](http://visionmedia.github.io/mocha/) and [Chai JS](http://chaijs.com/). Navigate to `http://localhost:9000/assets/javascripts/test/index.html` in your browser to boot up the test runner.\n\n## Dependencies\n\n- Java 7\n- Play 2.2.0\n\nA `build.sbt` file includes additional library dependencies, which will be automatically installed when building/running the application.\n\n## Contributors\n\n- Johan Brook\n- Henrik Andersson\n- Robin Andersson\n- Andreas Rolén","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohanbrook%2Fdat076-webapps","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohanbrook%2Fdat076-webapps","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohanbrook%2Fdat076-webapps/lists"}