Giter Site home page Giter Site logo

flight-advisor's Introduction

Hi there, I am Mohamed Taman! πŸ‘‹

Twitter URL Instagram URL LinkedIn URL Facebook URL

I speak Java and am a Java Champion, Oracle ACE Alumni, Jakarta EE ambassador, Chief Architect, Author, International Speaker, Trainer, and technology enthusiast.

I love sharing my knowledge and experience, contributing to open-source projects related to Java, and sharing PoCs & problems as code on this repository.

I am an author at Oracle Java Magazine, Oracle Magazine, IBM Developer Series [1] [2], DZone, Medium, InfoQ, and Packt Publishing Getting Started with Clean Code Java SE 9 "Video" and JavaFX Essentials "Book".

  • 🎯 Β  I’m currently focusing on: Springy Store Microservices and Flight Advisor Service; in addition, I constantly update other projects to the latest JDK and software libraries; ⭐️ star the projects you like 🀩, to continually support them.

  • πŸ”­ Β  I’m also working on Something cool related to AI and will soon publish it πŸ˜‰.

  • πŸ’¬ Β  Ask me about: OOP, Java, Spring, Jakarta EE, Web, Mobile, RESTful APIs, Database, Architecture, Cloud, Big Data, Design Patterns, Testing, Security, Enterprise integration, Distributed Systems, Microservices Blockchain, and People Management.

  • πŸ“« Β  How to reach me: catch and follow me from the above links πŸ‘†; also, follow me here.

  • ⚑ Β  Fun fact: I love 🐍, 🐜, 🐝, and β˜•οΈ.


NOTE: Top languages do not indicate my skill level or something like that; it's a GitHub metric of which languages I have the most code on GitHub.

flight-advisor's People

Contributors

mohamed-taman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

flight-advisor's Issues

Add Users Security

The functionality description is mentioned in task #3.

Add the following Security features are required:

  1. Encrypt the password.
  2. Salt the password.
  3. Create a Jwt generator.
  4. All communications are stateless, so imply JWT.
  5. Implement authorization.

Add code quality features

Quality features

Add code quality features to the build cycle for catching problems with code styles, poor coding practices, security issues, and more. Those features are meant to be for the development phase and code integration phase with CI.

All the features should have the ability to switched off and on, maybe could be enhanced with profiles, something like a profile for development and another for Production.

Here is a list of some of the features:

  1. Enrich the compiler to report all deprecated APIs, row data, bad exception handling, and others related to Java PL.

  2. Add ability to perform check agreed-on code style at build phase.

  3. Add the ability to find potential bugs as much as we can during development.

  4. Add ability to find potential security issues and make audits.

  5. Add ability to report the best code practice

  6. Finally, add the static code analysis during the actual coding.

  7. Add the code style to the IDE so that the formatted code adheres to it, which also will be checked when it builds.

Database Module

Create Database design and its implementation and should be n memory database.

  • Every user has a first name, last name, username, password, and salt.
  • For each city, the name, country, and description must be provided.
  • Each city could have a comment added by the user. Besides the comment's description, each comment should have created and modified date.
  • Import the data for the airports and routes from the datasets given in an attachment.
    • Note: Each airport contains a city and country name. Don’t import airports and routes if the city doesn’t
      exist.

Route dataset description:

Field Description
Airline 2-letter (IATA) or 3-letter (ICAO) code of the airline.
Airline ID Identifier for an airline.
Source airport 3-letter (IATA) or 4-letter (ICAO) code of the source airport.
Source airport ID An identifier for source airport.
Destination airport 3-letter (IATA) or 4-letter (ICAO) code of the destination
airport.
Destination airport ID Unique OpenFlights identifier for the destination airport.
Codeshare "Y" if this flight is a codeshare, empty otherwise.
Stops Number of stops on this flight ("0" for direct).
Equipment 3-letter codes for plane type(s) generally used on this flight, separated by spaces.
Price Flight cost.

Airport dataset description:

Field Description
Airport ID Identifier for this airport.
Name Name of the airport.
City Main city, served by the airport.
Country Country or territory where the airport is located.
IATA 3-letter IATA code. Null if not assigned/unknown.
ICAO 4-letter ICAO code. Null if not assigned.
Latitude Decimal degrees, usually to six significant digits.
Longitude Decimal degrees, usually to six significant digits.
Altitude In feet.
Timezone Hours offset from UTC.
DST Daylight savings time. One of E (Europe), A (US/Canada), S (South America), O (Australia), Z (New Zealand), N (None), or U (Unknown).
Tz database time zone The timezone in "tz" (Olson) format, e.g. "America/Los_Angeles."
Type Type of the airport.
Source Source of this data.

Create a User Module

There are two types of users:

  1. administrator and
  2. regular user.
  • The regular user has to register to be able to use a Flight advisor.
  • The Admin user is predefined as one user.
  • Every user has a first name, last name, username, password.

Implement City management

As an Architect, I want to add the city management components with business logic. To allow customers (admin or client) to:

  1. Add cities
    • Security: Admin only.
  2. Search cities.
    • Security: All clients.
  3. Comment on cities.
    • Security: All clients.
  4. Manage the city comments.
    • Security: All clients.

Complete Endpoints documentation

As an architect, I want all the endpoints to be documented so that anyone who reads the endpoint docs will understand what needs to be done.

Take an example of file upload management category documentation.

Create UI components and their routing logic

As an architect, I want to create the system components and their routing logic so that UI will be consistent with the initial setup and ready for business logic handling.

We have the following components:

Public:

  1. Home page component.
  2. Login component.
  3. Registration component.

City Management

  1. Add city component.
  2. Search city component.
  3. Travel component.

Comments Management

  1. Add city comment component.
  2. Update city comment component.
  3. Delete city comment component.
  4. Show city comments component.

Upload files

  1. upload component.

Compute the shortest path length

We need to save the route length and save it in the routes table.

We can do that by calculating the distance between route airports' latitude and longitude.

Get all airports

As an architect, I want to search for all airports by name so that I know about their names, cities, countries, Airport codes.

Name search should be like, not an exact search, and for a specific city.

Setup Flight Advisor Project

Build a monolith project with the following technologies:

  • Spring Boot and Spring MVC 2.4.0.M4
  • Java SE 15 with preview features.
  • Maven as a build tool.
  • JUnit 5.3 as a testing framework.
  • OpenAPI documentation.
  • Spring Security.
  • Initialize Repo with git-flow.

Show all possible paths between 2 cities

Note: the case here from the business perspective includes all the alternative flights with a maximum of 3 stops, for the following reason:

  • Because flight could have 10 stops around the world which will cost a lot and no one will take it.
  • Plus, it will kill the system with a lot of computations.

Compute Shortest Path for a flight.

User is traveling from city A to B, can include many stops, many airports, and it can cost a lot.

Find the cheapest flight from city A to B based on price. Return all the routes included total price and length.

  • For simplification, each returned route can contain the name of the source and destination cities and price and length.

The length computation will be covered by task number #15.

Implement travel functionality

This is to implement the main functionality of the service.

  1. Implement travel service UI.
  2. Implement travel Details UI.
  3. Implement supported functionality.

Create initial Frontend project configurations

As an architect, I want to have a UI project to streamline the interaction with the system.

The following requirements should be met:

  • The project should be a separate project with the name frontend.
  • In a separate branch with the same name.
  • Use Angular version 10 for development.
  • Update the documentation.

Create Travel Advisor RESTful APIs

  1. The administrator can:
    • Add cities. For each city, the name, country, and description must be provided.
    • Import the data for the airports and routes from the datasets given in an attachment.
  2. Regular user can:
    • Get all the cities (all the comments should be returned, or if specified, only the x latest comments).
    • Search for cities by name (all the comments should be returned, or if specified, only the x latest
      comments).
    • Add, Delete Update comment for the city.
    • Traveling from city A to B.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.