{"id":25060122,"url":"https://github.com/abeatrizsc/istudy","last_synced_at":"2025-05-07T15:08:31.416Z","repository":{"id":275998140,"uuid":"922249238","full_name":"ABeatrizSC/iStudy","owner":"ABeatrizSC","description":"[In Development] Website for study management. Full-stack application with Spring Boot (Java) | ReactJS (Typescript) | Microservices | Docker | JWT | Spring Cloud Gateway | Eureka | OpenFeign | MySQL","archived":false,"fork":false,"pushed_at":"2025-05-02T16:29:37.000Z","size":1705,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-07T15:08:25.585Z","etag":null,"topics":["docker","eureka-server","fullstack-development","java","microservices-architecture","mysql","reactjs","spring-boot","spring-cloud-gateway","spring-cloud-openfeign","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/ABeatrizSC.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,"zenodo":null}},"created_at":"2025-01-25T17:56:19.000Z","updated_at":"2025-05-02T16:29:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"99ac3096-8cb6-4a9d-b101-0282c73b835c","html_url":"https://github.com/ABeatrizSC/iStudy","commit_stats":null,"previous_names":["abeatrizsc/istudy"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ABeatrizSC%2FiStudy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ABeatrizSC%2FiStudy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ABeatrizSC%2FiStudy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ABeatrizSC%2FiStudy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ABeatrizSC","download_url":"https://codeload.github.com/ABeatrizSC/iStudy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252902614,"owners_count":21822261,"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":["docker","eureka-server","fullstack-development","java","microservices-architecture","mysql","reactjs","spring-boot","spring-cloud-gateway","spring-cloud-openfeign","typescript"],"created_at":"2025-02-06T15:56:48.531Z","updated_at":"2025-05-07T15:08:31.400Z","avatar_url":"https://github.com/ABeatrizSC.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![iStudy-logo-banner.jpg](docs%2Fimages%2FiStudy-logo-banner.jpg)\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Status-In%20Progress-yellow?style=for-the-badge\u0026logo=headspace\u0026logoColor=orange\u0026color=yellow\" alt=\"istudy-repo-status\" /\u003e\n  \u003cimg src=\"https://img.shields.io/github/license/Luk4x/apple-store?style=for-the-badge\u0026logo=unlicense\u0026logoColor=lightgrey\" alt=\"istudy-repo-license\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/java-%23ED8B00.svg?style=for-the-badge\u0026logo=openjdk\u0026logoColor=white\" alt=\"Java\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/spring-%236DB33F.svg?style=for-the-badge\u0026logo=spring\u0026logoColor=white\" alt=\"Spring\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge\u0026logo=typescript\u0026logoColor=white\" alt=\"TypeScript\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/react-%2320232a.svg?style=for-the-badge\u0026logo=react\u0026logoColor=%2361DAFB\" alt=\"React\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Next-black?style=for-the-badge\u0026logo=next.js\u0026logoColor=white\" alt=\"Next JS\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge\u0026logo=docker\u0026logoColor=white\" alt=\"Docker\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Rabbitmq-FF6600?style=for-the-badge\u0026logo=rabbitmq\u0026logoColor=white\" alt=\"RabbitMQ\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/mysql-4479A1.svg?style=for-the-badge\u0026logo=mysql\u0026logoColor=white\" alt=\"MySQL\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/tailwindcss-%2338B2AC.svg?style=for-the-badge\u0026logo=tailwind-css\u0026logoColor=white\" alt=\"TailwindCSS\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/MUI-%230081CB.svg?style=for-the-badge\u0026logo=mui\u0026logoColor=white\" alt=\"MUI\" /\u003e\n\u003c/p\u003e\n\n\u003c/br\u003e\n\n# What is iStudy?\niStudy is a web platform designed to help students efficiently organize, manage, and track their study habits. Among its many features are:\n\n- User registration and login;\n- Management of subjects and their topics;\n- Study tracking, based on registered subjects and topics;\n- Study games, such as flashcards and quizzes to reinforce learning;\n- Time management tools (Stopwatch and Pomodoro timer);\n- Schedule and reminder management;\n- Dashboards with metrics of study hours per subject, topic, and category (daily, weekly, and monthly).\n\n\u003c/br\u003e\n\n# Project Structure\n- `istudy-app`: This folder contains the front-end code of the application, built with TypeScript, React.Js and NextJS.\n- `istudy-services`: This folder contains the system's back-end (Java/Spring Boot), which follows a microservices architecture using Spring Cloud API Gateway as a request interceptor and Spring Cloud Netflix (Eureka) for service registration and discovery.\n\n![istudy_architecture.png](docs%2Fimages%2Fistudy_architecture.png)\n(Preliminary draft of the system architecture. Some inaccuracies may be present as I am still in the learning and understanding phase.)\n\n\u003c/br\u003e\n\n# Technologies Used\n\nAt the moment, these are the technologies used:\n\n## Back-End\n* **Java**: A high-level, object-oriented programming language widely used for building server-side applications, web services, and Android applications.\n\n* **Spring Boot**: A framework that simplifies the development of Java applications by providing built-in features for dependency injection, configuration, and microservices support.\n\n* **Spring Security**: A powerful and customizable authentication and access control framework for Java applications.\n\n* **JWT (JSON Web Token)**: Open standard that allows secure transmission of authentication information.\n\n* **Spring Cloud API Gateway**: Serves as the central entry point, handling request routing, authentication, and traffic control between microservices.\n\n* **Spring Cloud Netflix Eureka**: Enables automatic registration and discovery of microservices, facilitating dynamic scaling and seamless communication.\n\n* **RabbitMQ**: An open-source software that acts as a message broker, or middleman, between producers and consumers of messages.\n\n* **JPA**: The Java Persistence API, a specification that provides object-relational mapping (ORM) to manage relational data in Java applications.\n\n* **MapStruct**: A Java mapping framework that simplifies object-to-object mapping, reducing boilerplate code and improving maintainability.\n\n* **Flyway**: A database migration tool that ensures version control and consistency across database schema changes.\n\n* **Lombok**: A Java library that reduces boilerplate code by generating common methods like getters, setters, constructors, and more through annotations.\n\n* **Postman**: A tool used for API testing and development, enabling users to send HTTP requests, inspect responses, and automate API tests.\n\n## Front-End\n* **TypeScript**: A superset of JavaScript that adds static typing, making code easier to read, debug, and maintain.\n\n* **React.js**: A JavaScript library for building user interfaces, focusing on creating reusable UI components and managing the view layer in web applications.\n\n* **NextJS**: Next. js is a React framework that enables several extra features, including server-side rendering and static rendering.\n\n* **TailwindCSS**: A utility-first CSS framework that allows rapid UI development using predefined classes.\n\n* **Material UI (MUI)**: MUI is a massive library of UI components designers and developers can use to build React applications.\n\n* **Tanstack/React Query**: A powerful data-fetching and state management library for React, ideal for managing server state with features like caching, background updates, and retries.\n\n* **JWT Decode**: A small library that decodes JSON Web Tokens (JWT) without verifying their signature.\n\n* **Lucide React**: A React library that provides access to Lucide’s beautiful and consistent set of SVG icons.\n\n* **React Toastify**: A React library for showing toast notifications in a simple and customizable way.\n\n* **Formik**: A form management library for React that simplifies form handling, validation, and submission.\n\n* **Yup**:  A JavaScript schema builder for value parsing and validation, often used with Formik for form validation.\n\n* **DayJs**: A lightweight JavaScript library for parsing, validating, manipulating, and formatting dates.\n\n* **Swiper js**: A powerful, free, and open-source JavaScript library for creating modern, touch-friendly sliders and carousels.\n\n* **React card flip**: A specific library or component that allows you to create a card that animates to reveal content on its back when clicked or interacted withxt.\n\n* **React calendar**: A lightweight and easily configurable calendar component.\n\n## Databases and other technologies\n* **Docker**: A platform that allows developers to automate the deployment of applications inside lightweight containers, ensuring consistency across different environments and simplifying the setup process.\n\n* **MySQL**: A relational database management system used for reliable data storage and management.\n\n\u003c/br\u003e\n\n# Requirements\nTo run the project on your machine, the following tools must be installed and configured beforehand:\n\n- Docker\n- Git\n\nOptional for local development or testing:\n\n- Java Development Kit (JDK) 17\n- Node.js\n- Apache Maven\n- MySQL 8.0.34\n- MySQL Workbench\n- Postman\n\n\u003c/br\u003e\n\n# Installation guide\nFollow the steps below to download, configure, and run the project in your environment:\n\n1. **Clone the repository**\n```bash\ngit clone https://github.com/ABeatrizSC/istudy.git\n ```\n\n2. **Navigate to the project directory**\n\n```bash\ncd istudy\n ```\n\n3. **Build and initialize the docker container**\n\n ```bash\ndocker-compose up --build\n ```\n\n\u003c/br\u003e\n\n# iStudy-services - Back-End\n## Summary endpoints\nAs the project is still in progress and subject to changes, this is a brief summary of all the available endpoints in each microservice and their functionality:\n\n### 1. AUTH-MS\n- Authentication and user management microservice.\n\n| Method  | Endpoint                  | Description                         | Request Body                   | Response Body                           |\n|---------|---------------------------|------------------------------------------|--------------------------------|-----------------------------------------|\n| **POST**  | /auth/login              | Authenticates a user and returns a JWT token | `LoginRequestDto` (email, password) | LoginResponseDto (JWT token)           |\n| **POST**  | /auth/register           | Registers a new user                     | `RegisterRequestDto` (name, email, password) | RegisterResponseDto |\n| **GET**   | /auth/authenticated-user  | Retrieves the authenticated user from the token | - | String (user ID) |\n| **GET**   | /users/{id}              | Fetches a user by ID if authorized      | - | `User` |\n\n### 2. DISCIPLINE-MS\n- Microservice responsible for creating, updating, deleting, and generating information about disciplines and their topics.\n\n#### Discipline endpoints\n\n| Method  | Endpoint                      | Description                                              | Request Body                   | Response Body                          |\n|---------|--------------------------------|----------------------------------------------------------|--------------------------------|----------------------------------------|\n| **POST**   | /disciplines                 | Creates a new discipline                                 | DisciplineRequestDto           | `List\u003cDiscipline\u003e`     |\n| **PUT**    | /disciplines/{id}            | Updates an existing discipline by ID                     | DisciplineRequestDto           | `List\u003cDiscipline\u003e`                      |\n| **DELETE** | /disciplines/{id}            | Deletes a discipline by ID                               | -                            | `List\u003cDiscipline\u003e`                      |\n| **GET**    | /disciplines                 | Retrieves a discipline by name                           | - (Query Param: name)        | `Discipline`                            |\n| **GET**    | /disciplines/all             | Retrieves all disciplines                                | -                            | `List\u003cDiscipline\u003e`                      |\n| **GET**    | /disciplines/{id}            | Retrieves a discipline by ID                             | -                            | `Discipline`                            |\n| **GET**    | /disciplines/categories/{category} | Retrieves all disciplines by category                    | -                            | `List\u003cDiscipline\u003e`                      |\n| **GET**    | /disciplines/categories | Retrieves all disciplines category                    | -                            | `String[]`                      |\n| **GET**    | /disciplines/search          | Returns all disciplines that have the searched character | - (Query Param: name)        | `List\u003cDiscipline\u003e`                      |\n| **GET**    | /disciplines/completed       | Retrieves all completed disciplines                      | -                            | `List\u003cDiscipline\u003e`                      |\n\n#### Topic endpoints\n\n| Method  | Endpoint                      | Description                                | Request Body                   | Response Body                          |\n|---------|--------------------------------|-------------------------------------------------|--------------------------------|----------------------------------------|\n| **POST**   | /disciplines/topics          | Creates a new topic                             | `TopicRequestDto`                | `List\u003cTopicResponseDto\u003e`               |\n| **PUT**    | /disciplines/topics/{id}     | Updates an existing topic by ID                 | `TopicUpdateDto`                 | `List\u003cTopicResponseDto\u003e`               |\n| **DELETE** | /disciplines/topics/{id}     | Deletes a topic by ID                           | -                            | `List\u003cTopicResponseDto\u003e`               |\n| **GET**    | /disciplines/topics          | Retrieves a topic by name                       | Query Param: `name`        | `TopicResponseDto`                       |\n| **GET**    | /disciplines/topics/all      | Retrieves all topics                            | -                            | `List\u003cTopicResponseDto\u003e`               |\n| **GET**    | /disciplines/topics/{id}     | Retrieves a topic by ID                         | -                            | `TopicResponseDto`                       |\n\n### 3. STUDY-TRACKER-MS\n- This microservice is responsible for managing study sessions. It allows users to create, update, retrieve, and delete study records.\n- Additionally, it provides analytical insights into study habits based on different time periods.\n\n| **Method** | **Endpoint**                 | **Description**                                | **Request Body**                                | **Example**                                      |\n|-----------|------------------------------|------------------------------------------------|-------------------------------------------------|--------------------------------------------------|\n| **POST**  | `/studies`                    | Creates a new study record.                   | `StudyRequestDto`                               | -                                                |\n| **PUT**   | `/studies/{id}`               | Updates a study record by ID.                 | Path variable: `{id} (String)`, `StudyRequestDto` | -                                                |\n| **DELETE** | `/studies/{id}`              | Deletes a study record by ID.                 | Path variable: `{id} (String)`                  | -                                                |\n| **GET**   | `/studies/all`                | Retrieves all study records.                  | -                                            | -                                                |\n| **GET**   | `/studies/{id}`               | Retrieves a study by ID.                      | Path variable: `{id} (String)`                  | -                                                |\n| **GET**   | `/studies/completed`          | Retrieves completed study sessions.           | -                                            | -                                                |\n| **GET**   | `/studies/date`               | Retrieves studies by a specific date.         | Query param: `date (String, YYYY-MM-DD)`        | `GET /studies/date?date=2024-03-01`              |\n| **GET**   | `/studies/month`              | Retrieves studies for a specific month.       | Query param: `year (Integer), month (Integer)`  | `GET /studies/month?year=2024\u0026month=3`           |\n| **GET**   | `/studies/month/info`         | Retrieves study statistics for a month.       | Query param: `year (Integer), month (Integer)`  | `GET /studies/month/info?year=2024\u0026month=3`      |\n| **GET**   | `/studies/week`               | Retrieves studies for a specific week.        | Query param: `year (Integer), week (Integer)`   | `GET /studies/week?year=2024\u0026week=10`            |\n| **GET**   | `/studies/week/info`          | Retrieves study statistics for a week.        | Query param: `year (Integer), week (Integer)`   | `GET /studies/week/info?year=2024\u0026week=10`       |\n| **GET**   | `/studies/subject-category`   | Retrieves studies by subject category.        | Query param: `category (String)`               | `GET /studies/subject-category?category=HUMAN_SCIENCES`    |\n\n### 4. STUDY-GAMIFICATION-MS\n- Microservice that manages the creation of quizzes and flashcards to enhance user learning.\n\n#### Quiz Endpoints\n\n| Method   | Endpoint                      | Description                                       | Request Body     | Response Body     |\n|----------|--------------------------------|---------------------------------------------------|------------------|-------------------|\n| **POST**  | `/games/quizzes`              | Creates a new quiz                                | `QuizRequestDto` | `List\u003cQuiz\u003e`      |\n| **PUT**   | `/games/quizzes/{id}`         | Updates a quiz by ID                              | `QuizRequestDto` | `List\u003cQuiz\u003e`      |\n| **PUT**   | `/games/quizzes/answer/{id}`  | Answers a quiz by ID and returns wrong answers | `QuizAnswerDto`  | `List\u003cQuestion\u003e`  |\n| **DELETE** | `/games/quizzes/{id}`        | Deletes a quiz by ID                              | -                | `List\u003cQuiz\u003e`      |\n| **GET**   | `/games/quizzes/all`          | Retrieves all quizzes                             | -                | `List\u003cQuiz\u003e`      |\n| **GET**   | `/games/quizzes/{id}`         | Retrieves a quiz by ID                            | -                | `Quiz`            |\n| **GET**   | `/games/quizzes/search?title={title}` | Retrieves a quiz by title                         | -                | `Optional\u003cQuiz\u003e`  |\n\n#### Flashcard Endpoints\n\n| Method   | Endpoint                          | Description                    | Request Body          | Response Body      |\n|----------|----------------------------------|--------------------------------|-----------------------|--------------------|\n| **POST**  | `/games/flashcards`              | Creates a new flashcard        | `FlashcardRequestDto` | `List\u003cFlashcard\u003e` |\n| **PUT**   | `/games/flashcards/{id}`         | Updates a flashcard by ID      | `FlashcardRequestDto` | `List\u003cFlashcard\u003e` |\n| **PUT**   | `/games/flashcards/answer/{id}`  | Answers a flashcard by ID and return cards marked as wrong     | `FlashcardAnswerDto`  | `List\u003cCard\u003e`      |\n| **DELETE** | `/games/flashcards/{id}`        | Deletes a flashcard by ID      | -                     | `List\u003cFlashcard\u003e` |\n| **GET**   | `/games/flashcards/all`         | Retrieves all flashcards       | -                     | `List\u003cFlashcard\u003e` |\n| **GET**   | `/games/flashcards/{id}`        | Retrieves a flashcard by ID    | -                     | `Flashcard`       |\n| **GET**   | `/games/flashcards/search?title={title}` | Retrieves a flashcard by title | -                     | `Optional\u003cFlashcard\u003e` |\n\n### 5. STUDY-PLANNER-MS\n- Manages user reminders and schedules\n\n#### Reminder endpoints\n| Method | Endpoint                                              | Description                                                         | Request Body             | Response Body                 |\n|--------|-------------------------------------------------------|---------------------------------------------------------------------|--------------------------|-------------------------------|\n| GET    | `/planners/reminders?date=yyyy-MM-dd`                | Retrieves reminders for a specific date (e.g., 2025-05-02)          | -                        | `List\u003cReminderResponseDto\u003e`   |\n| GET    | `/planners/reminders/all`                            | Retrieves all reminders                                             | -                        | `List\u003cReminderResponseDto\u003e`   |\n| GET    | `/planners/reminders/{id}`                           | Retrieves a reminder by its ID                                      | -                        | `ReminderResponseDto`         |\n| GET    | `/planners/reminders/completed?isCompleted=true`     | Retrieves reminders by completion status (`true` or `false`)        | -                        | `List\u003cReminderResponseDto\u003e`   |\n| POST   | `/planners/reminders`                                | Creates one or more reminders                                       | `ReminderRequestDto`     | `List\u003cReminderResponseDto\u003e`   |\n| PUT    | `/planners/reminders/{id}`                           | Updates a reminder by its ID                                        | `ReminderRequestDto`     | `List\u003cReminderResponseDto\u003e`   |\n| DELETE | `/planners/reminders/{id}`                           | Deletes a reminder by its ID                                        | -                        | `List\u003cReminderResponseDto\u003e`   |\n\n#### Schedule endpoints\n| Method | Endpoint                                               | Description                                                              | Request Body               | Response Body                    |\n|--------|--------------------------------------------------------|--------------------------------------------------------------------------|----------------------------|----------------------------------|\n| GET    | `/planners/schedules?dayOfWeek=1`                      | Retrieves schedule items for a given day of the week (`1 = Monday`, etc) | -                          | `List\u003cScheduleItemResponseDto\u003e` |\n| GET    | `/planners/schedules/all`                              | Retrieves all schedule items                                             | -                          | `List\u003cScheduleItemResponseDto\u003e` |\n| GET    | `/planners/schedules/{id}`                             | Retrieves a schedule item by its ID                                      | -                          | `ScheduleItemResponseDto`       |\n| POST   | `/planners/schedules`                                  | Creates one or more schedule items                                       | `ScheduleItemRequestDto`   | `List\u003cScheduleItemResponseDto\u003e` |\n| PUT    | `/planners/schedules/{id}`                             | Updates a schedule item by its ID                                        | `ScheduleItemRequestDto`   | `List\u003cScheduleItemResponseDto\u003e` |\n| DELETE | `/planners/schedules/{id}`                             | Deletes a schedule item by its ID                                        | -                          | `List\u003cScheduleItemResponseDto\u003e` |     |\n\n### STATUS CODE MEANINGS\n- **`200 OK`** → Request was successful.\n- **`201 Created`** → A new resource was successfully created.\n- **`400 Bad Request`** → Invalid input parameters or a duplicate name exists.\n- **`401 Unauthorized`** → User must be authenticated to perform this action.\n- **`404 Not Found`** → The requested resource does not exist.\n\n\u003c/br\u003e\n\n# iStudy-app - Front-End\n## Pages preview\n- Since it's still under development, I'm sharing just a few previews of the screens/pages that are already finished:\n\n### Login page\n![alt text](docs/images/login-page.jpg) \n\n### Register page\n![alt text](docs/images/sign-up-page.jpg) \n\n### Subject page\n![alt text](docs/images/subject-page.jpg)\n#### Subject page: Create subject modal\n![alt text](docs/images/create-subject-page.jpg) \n\n### Subject Management page\n![alt text](docs/images/subject-management-page.jpg)\n\n#### Subject Management page: Create topic modal\n![alt text](docs/images/create-topic-page.jpg) \n\n#### Subject Management page: Delete topic modal\n![alt text](docs/images/delete-topic-page.jpg) \n\n### Studies page\n![alt text](docs/images/studies-page.jpg) \n\n#### Studies page: Create study modal\n![alt text](docs/images/create-study-page.jpg) \n\n### Reminders page\n![alt text](docs/images/reminders-page.jpg) \n\n### Schedules page\n![alt text](docs/images/schedule-page.jpg) \n#### Schedules page: Create schedule modal\n![alt text](docs/images/create-schedule-page.jpg) \n\n### Calendar page\n![alt text](docs/images/calendar-page.jpg) \n\n### Games\n#### Games: Flashcards page\n![alt text](docs/images/flashcard-page.jpg) \n#### Games: Flashcards create modal\n![alt text](docs/images/create-flashcard-page.jpg) \n#### Games: Flashcard game page\n![alt text](docs/images/flashcard-game-page.jpg) \n#### Games: Flashcard result game page\n![alt text](docs/images/flashcard-game-result-page.jpg) \n\n### Time tracker\n#### Time tracker: Timer page\n![alt text](docs/images/timer-page.jpg) \n#### Time tracker: Pomodoro page\n![alt text](docs/images/pomodoro-page.jpg) \n#### Time tracker: Pomodoro settings modal\n![alt text](docs/images/pomodoro-settings-modal.jpg) \n\n# Contact\n* GitHub: [ABeatrizSC](https://github.com/ABeatrizSC)\n* Linkedin: [Ana Beatriz Santucci Carmoni](www.linkedin.com/in/ana-carmoni)\n* Email: [anabeatrizscarmoni@gmail.com](mailto:anabeatrizscarmoni@gmail.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabeatrizsc%2Fistudy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabeatrizsc%2Fistudy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabeatrizsc%2Fistudy/lists"}