{"id":19670796,"url":"https://github.com/jay-ike/invoice-app","last_synced_at":"2025-07-10T01:07:38.997Z","repository":{"id":231695126,"uuid":"723340786","full_name":"jay-ike/invoice-app","owner":"jay-ike","description":"a web application to track invoice","archived":false,"fork":false,"pushed_at":"2024-09-30T13:55:44.000Z","size":523,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-27T04:50:05.095Z","etag":null,"topics":["frameworkless","invoice"],"latest_commit_sha":null,"homepage":"https://jay-ike-invoice.vercel.app","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jay-ike.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-25T11:06:08.000Z","updated_at":"2024-04-05T09:54:21.000Z","dependencies_parsed_at":"2025-02-27T04:44:46.718Z","dependency_job_id":"a418777e-e7f8-4d12-8858-43cb857dbdb3","html_url":"https://github.com/jay-ike/invoice-app","commit_stats":null,"previous_names":["jay-ike/invoice-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jay-ike/invoice-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jay-ike%2Finvoice-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jay-ike%2Finvoice-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jay-ike%2Finvoice-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jay-ike%2Finvoice-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jay-ike","download_url":"https://codeload.github.com/jay-ike/invoice-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jay-ike%2Finvoice-app/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264506916,"owners_count":23619100,"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":["frameworkless","invoice"],"created_at":"2024-11-11T17:07:14.162Z","updated_at":"2025-07-10T01:07:38.745Z","avatar_url":"https://github.com/jay-ike.png","language":"JavaScript","readme":"# Frontend Mentor - Invoice app solution\n\nThis is a solution to the [Invoice app challenge on Frontend Mentor](https://www.frontendmentor.io/challenges/invoice-app-i7KaLTQjl) Frontend Mentor challenges help you improve your coding skills by building realistic projects.\n\n## Table of contents\n\n- [Overview](#overview)\n  - [The challenge](#the-challenge)\n  - [Screenshot](#screenshot)\n  - [Links](#links)\n- [My process](#my-process)\n  - [Built with](#built-with)\n  - [What I learned](#what-i-learned)\n  - [Continued development](#continued-development)\n  - [Useful resources](#useful-resources)\n- [Author](#author)\n\n\n## Overview\nThis invoicing web application will users to create invoice and print it locally\nadditionally they'll be able to manage their invoices\n\n### The challenge\n\nUsers should be able to:\n\n- Create, read, update, and delete invoices\n- Receive form validations when trying to create/edit an invoice\n- Save draft invoices, and mark pending invoices as paid\n- Filter invoices by status (draft/pending/paid)\n- Toggle light and dark mode\n- View the optimal layout for the app depending on their device's screen size\n- See hover states for all interactive elements on the page - A step is submitted, but no selection has been made\n- Keep track of any changes, even after refreshing the browser\n\n### Screenshot\n\n![mobile view of the solution](./mobile-version.png)\n![desktop view of the solution](./desktop-version.png)\n\n### Links\n\n- Solution URL: [The github Repository](https://github.com/jay-ike/invoice-app)\n- Live Site URL: [github page](https://jay-ike-invoice.vercel.app)\n\n## My process\n\n### Built with\n\n- Semantic HTML5 markup\n- CSS Print\n- Flexbox\n- CSS Grid\n- Mobile-first workflow\n- DOM Scripting with javascript\n\n### What I learned\n\nIn most cases it is important to use interactive elements rather than using non-interactive elements and adding the tabindex attribute\n\n```html\n\u003c!-- Don't do this --\u003e\n\u003cdiv tabindex=\"0\"\u003e\u003c/div\u003e\n\n\u003c!-- Instead do this --\u003e\n\u003cbutton\u003e\u003c/button\u003e\n```\n\nIn css we can style a web page for printing purposes which can enable us to directly print our invoice in the browser\n\n```css\n//to define the page size when printed\n@page {\n    size: A4;\n}\n```\n\nIn javascript we can communicate we a script running in a different thread thanks to MessageChannel\n```js\n    const worker = new Worker();\n    const channel = new MessageChannel();\n    //initialize the communication (The worker will be able to send message with the port2)\n    worker.postMessage(\n            \"message port sent\",\n            \"*\",\n            [channel.port2]\n    );\n\n    //listen to messages sent by the worker\n    channel.port1.onmessage = function (message) {\n        console.log(message);\n    }\n\n    //send data to the worker\n    channel.port1.postMessage(data);\n}\n\n```\n\n### Continued development\n\nWe can still improve the project with the following features:\n- setup user preferences(currency, print layout, etc)\n- add service worker to improve performance\n- setup the server to be able to use the app anywhere\n\n### Useful resources\n\n- [Mozilla developer network](https://developer.mozilla.com) - This is where I usually go when looking for documentation even though for more in-depth knowledge I recommend reading the specifications\n\n\n## Author\n\n- Website - [Ndimah Tchougoua](https://www.github.com/jay-ike)\n- Frontend Mentor - [@jay-ike](https://www.frontendmentor.io/profile/jay-ike)\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjay-ike%2Finvoice-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjay-ike%2Finvoice-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjay-ike%2Finvoice-app/lists"}