[![Contributors][contributors-shield]][contributors-url] [![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url] [![MIT License][license-shield]][license-url]
Table of Contents
Conventional flight ticket ordering through airports and letters became a thing of the past long ago. In our current modern world, the flight system has rapidly advanced and replaced the obsolete manual bookings with web-based technology system, which allows clients to easily organise their complete travel experiences right on the palm of their hand.
Therefore, it's critically imperative for any flight management system to employ a systematic application to operate the process of handling and managing bookings online. However, the intended system bears a significant complexity that might Add an overhead that is not negligible.
This project is created as a comprehensive solution to develop a flight management system, including an extensive range of features:
- Flight finding, selecting, and ordering
- Effortlessly complete the required information in a straightforward manner.
- Authentication and authorisation enabled with NextAuth
- In-built payment procedures handler, making interacting with 3rd-party clients easier than ever
- Email services with Postmark substantially enhance users' seamless personalisation.
- Pre-defined Postgres database schemas, capable of rapidly querying and mutating the data systematically
- Responsive to every device screen size, applicable to every device
- Completely type safe and type annotated by default with Prisma and tRPC, ensuring a seamless developer experience
- Administrative site with access level for unchallenged supervision
npm iDefine your credentials URL in the .env file as DATABASE_URL, and Prisma will be able to locate and migrate the programme schema into the DB. Most of the relational database systems are supported, including PostgreSQL, MySQL, and SQL Server, but parameters may have to be modified in the Prisma configuration. You can find it at prisma/schema.prisma
To merge the models into your database schema, simply run:
npx prisma migrate devNextAuth required generating a local secret key before using it to ensure a secure process between JWT communications. Luckily, the libraries make it easy for us to work on the local by running a single line.
npx authWhich will generate a random key at your .env.local file. You are free to use it in your own development server.
However, deploying NextAuth required more than just that, since exposing the system to the public introduced consequential risk to the system. Before production deployment, please refer to NextAuth Deployment Guide here.
We use Postmark as the client for our email service. Even though sending mail is optional in the development system, it's absolutely essential to have an email client in our real-world system. You can simply set this up to mirror the production email workflow by defining your POSTMARK_CLIENT environment variable.
To get a POSTMARK_CLIENT key, you will have to sign up for Postmark and undergo their verification process. This shouldn't take a long time to get it up and running.
Not an imperative use case, but storing users' state in the local storage is an amazing enhancement to the workflow. We use Zustland for your global state management, but ensure the development server has access to your browser's local storage.
Simply run
npm run devTo deploy the application on your localhost
npm run buildThe software uses a set of linting and code quality checker tools, which might require you to resolve the issues before generating the final production build to ensure optimisation and maximum efficiency.
The application is presented with an intuitive interface, which can be explored further at our domain FlyDreamAir.it.com
- Bookings and Tickets Management
- Email Client
- Meals and Baggages Add-on Services
- Account Management
See the open issues for a full list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request


