{"id":41182718,"url":"https://github.com/leanaranda/mynotes-app","last_synced_at":"2026-01-31T04:00:44.952Z","repository":{"id":334052874,"uuid":"1133795844","full_name":"LeanAranda/MyNotes-App","owner":"LeanAranda","description":"Simple web application for creating, categorizing, and filtering text notes. [username: user, password:1234]","archived":false,"fork":false,"pushed_at":"2026-01-26T22:49:51.000Z","size":219,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-27T09:48:54.145Z","etag":null,"topics":["docker","java","javascript","nodejs","react","rest-api","spring-boot","vite"],"latest_commit_sha":null,"homepage":"https://p01--front--7hnk8wmpgxbr.code.run","language":"Java","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/LeanAranda.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-13T20:39:23.000Z","updated_at":"2026-01-26T22:50:54.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/LeanAranda/MyNotes-App","commit_stats":null,"previous_names":["leanaranda/mynotes-app"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/LeanAranda/MyNotes-App","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeanAranda%2FMyNotes-App","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeanAranda%2FMyNotes-App/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeanAranda%2FMyNotes-App/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeanAranda%2FMyNotes-App/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LeanAranda","download_url":"https://codeload.github.com/LeanAranda/MyNotes-App/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeanAranda%2FMyNotes-App/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28928628,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T02:59:34.861Z","status":"ssl_error","status_checked_at":"2026-01-31T02:59:05.369Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["docker","java","javascript","nodejs","react","rest-api","spring-boot","vite"],"created_at":"2026-01-22T20:11:41.078Z","updated_at":"2026-01-31T04:00:44.946Z","avatar_url":"https://github.com/LeanAranda.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# My Notes App\nSimple web application for creating, categorizing, and filtering text notes.\n\nThis project uses Java Spring Boot for the **backend** and Node.js + React for the **frontend**, all deployed using **Docker**.\n\n---\n\n## Updates\nSee the full list of changes in the [CHANGELOG.md](./CHANGELOG.md).\n\n---\n\n## Sections\n- [Backend](#backend)\n- [Frontend](#frontend)\n- [Installation \u0026 Usage](#installation--usage)\n- [Live version](#live-deployed-version)\n\n---\n\n# Backend\n\nThis is the **backend** service for the Notes App. It exposes a REST API for managing notes and tags, using a layered architecture and persistent storage via MySQL.\n\n---\n\n## Runtimes \u0026 Tools\n\n* Java 17\n* Spring Boot 4.0.1\n* Maven\n* JWT\n* Spring Web\n* Spring Data Jpa\n* Mysql Driver\n* Lombok\n* Validation\n\n---\n\n## Database\nOverview of database setup and design:\n\n- MySQL 8.0\n- **Time zones:** Dates are stored in UTC and displayed in the user’s local time for consistency.  \n- **Schema:** Main tables are `users`, `notes`, and `categories`.\n- **Diagram:** An exported ER diagram and the SQL structure file are available in the `/backend/db` folder for reference.\n\n---\n\n## Features\n- The model is multi-user support prepared through one-to-many relationships between User, Note, and Category. \n- In the current version, a single user is assumed and categories are global.  \n- The model is already prepared to allow each user to manage their own categories associated with their notes if this feature is introduced later on. \n- Possible future additions: full CRUD for users (including registration), categories, and a trash bin.  \n- Layered architecture (Controller → Service → Repository).  \n- Notes state managed via `status` enum (active, archived, deleted).  \n- Passwords stored with BCrypt hashing.  \n- Stateless authentication with JWT.\n\n---\n\n## API Endpoints\n\n**Default port:** `9090`  \nThe service is available at `http://localhost:9090`.\n\n\n🔹 User\n```http\nPOST    /auth/login                            → login (returns token)\nGET     /users/{id}                            → get user by id\n```\n\n🔹 Notes\n```http\nPOST    /notes/create                          → create a new note\nPOST    /notes/update                          → update an existing note\nPOST    /notes/archive/{id}                    → archive a note by id\nPOST    /notes/unarchive/{id}                  → unarchive a note by id\nDELETE  /notes/delete/{id}                     → delete a note by id\nGET     /notes/myNotes/{id}                    → get a note by id\nGET     /notes/myNotes/active                  → list active notes of the user\nGET     /notes/myNotes/archived                → list archived notes of the user\nGET     /notes/myNotes/active/{categoryId}     → list active notes by category\nGET     /notes/myNotes/archived/{categoryId}   → list archived notes by category\n```\n\n🔹 Category\n```http\nGET     /categories/myCategories               → list user’s categories\nGET     /categories/myCategories/{categoryId}  → get user’s category by id\n```\n\n---\n\n# Frontend\n\nThis is the **frontend** service of the project, built with React + Vite as a Single Page Application (SPA), and designed to connect with the backend API implemented in Spring Boot.\n\n\n---\n\n## Runtimes \u0026 Tools \n- Node.js 25+\n- React 19\n- Vite\n- Axios (API requests)\n- CSS\n  \n---\n\n## Features\n- Single Page Application (SPA) built with React + Vite  \n- Create, edit and list notes  \n- Apply tags and filter by categories  \n- Archive and unarchive notes  \n- Delete notes  \n- User authentication via JWT (login)\n- Background color switch mode button (gray/yellow)\n\n---\n\n## Components\n\n- **NotesList.jsx** → renders the list of notes, filters, and view buttons  \n- **NoteCard.jsx** → individual note card, double-click to edit  \n- **NoteForm.jsx** → form for creating a new note  \n- **EditNoteForm.jsx** → form for editing an existing note  \n- **App.jsx** → application entry point with authentication and state management\n\n---\n\n# Installation \u0026 Usage\n\n\u003e Make sure you have **Docker** installed on your system before running the project.  \n\nYou can run the application in two ways:\n\n### Option 1 – Docker Compose\n1) Open an integrated terminal in the **root of the project**.\n2) Build and start all services (frontend, backend, database) with a single command:\n```bash\ndocker compose up --build\n```\n\n### Option 2 – Run script (linux)\nAlternatively, you can use the provided script to set up and start the stack:\n1) Open an integrated terminal in the **root of the project**.\n2) Give execution permission to the script:\n```bash\nchmod +x run.sh\n```\n3) Run the script:\n```bash\n./run.sh\n```\n\n## Accessing the Application\nAfter starting, wait until all services are fully up and running.\n\nNow you can access the frontend at **http://localhost:5173** and start testing all the features of My Notes App.\n\n### Default Login Credentials \n- **Username:** `NotesUser`\n- **Password:** `pass123`\n\n# Live Deployed Version \nDeployed in Northflank.com\n\nTry the app online at: https://mynotes--frontend--z6wxwfqcq9zw.code.run\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleanaranda%2Fmynotes-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleanaranda%2Fmynotes-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleanaranda%2Fmynotes-app/lists"}