GoAirways is a sophisticated frontend project built with Vue.js and Nuxt.js, designed to provide a seamless and dynamic user experience for an airline management platform. This frontend serves as a gateway to the backend, leveraging Nuxt.js server capabilities and implementing modern tools for state management, routing, and enhanced user interactions.
This project its part of a FullStack project with a backend build in Go:
I implemented my own security system using two-factor authentication. First, introduce CARD ID and Passwords communicate directly with the backend written in Go to send an email containing a unique PIN that expires after 2 minutes. Once the PIN is validated on a server built with Nuxt, I create a JWT, attach it to an HTTP-only cookie, and send it to the entire app. From this point onwards, every request goes through a gateway in the Nuxt server, which validates the token's integrity (valid for 1 hour) and checks aspects like user roles, etc. If valid, it redirects the response to the Go backend, there more checks are maded and finally updating general states and loading the UI.
- Dynamic Routing: Utilizes Nuxt.js dynamic routing to create personalized and flexible user experiences.
- State Management: Implements Pinia for robust and efficient state management.
- Map Integration: Leverages Mapbox for interactive maps and location-based features.
- Data Grids: Employs Ag-Grid Vue for powerful and customizable data tables.
- Notifications: Uses Vue Toastification for elegant and responsive notifications.
- Date Management: Incorporates Luxon for advanced date and time formatting.
- SSR and Security: Provides server-side rendering (SSR) with a security layer that includes HttpOnly cookies for authentication.
- Microservices Support: Integrates Nuxt Server and Express.js to connect internal microservices seamlessly.
- Framework: Vue.js with Nuxt.js
- State Management: Pinia
- Mapping: Mapbox
- Data Grids: Ag-Grid Vue
- Notifications: Vue Toastification
- Date Handling: Luxon
- Server: Nuxt Server and Express.js
The application includes multiple pages and routes:
- Login
- User authentication with JWT and HttpOnly cookies.
- Supports two-factor authentication (2FA).
- Route Creator
- Enables creation of airline routes dynamically using Mapbox.
- Route Approval
- Admin interface for approving or rejecting airline routes.
- Plane Registry
- Interface for registering new planes.
- Hub Administration
- Admin tools for managing airport hubs.
- Plane (Dynamic)
- Dynamic pages for viewing and managing specific planes, utilizing Nuxt.js’s dynamic routing feature.
- Nuxt.js’s routing system dynamically generates pages for entities like planes or routes.
- Simplifies state management with a clean and reactive API.
- Centralized store ensures data consistency across components.
- Interactive and visually appealing maps.
- Real-time data overlay for flight routes, hubs, and planes.
- Efficient and feature-rich data tables.
- Provides filtering, sorting, and pagination capabilities.
- Lightweight and customizable toast notifications for user feedback.
- Ensures alerts are non-intrusive yet highly visible.
- Advanced date formatting and manipulation.
- Handles timezone conversions seamlessly.
- Nuxt.js server capabilities provide server-side rendering for better SEO and faster page loads.
- Security layer with:
- HttpOnly cookies for authentication.
- Integration with JWT for secure session management.
- Internal microservices connected through Express.js, enabling modular and scalable backend interactions.
- Node.js (>= 16.0)
- npm or yarn
- Clone the repository:
git clone
https://github.com/your-repo/goairways-frontend.git
- Navigate to the project directory:
cd goairways-frontend
- Install dependencies:
npm install
# or
yarn install
To start the development server:
npm run dev
# or
yarn dev
To build the application for production:
npm run build
# or
yarn build
To start the production server:
npm run start
# or
yarn start
Run ESLint for code linting:
npm run lint
Run Prettier for code formatting:
npm run format
- Build the project:
npm run build
- Deploy the
.output
directory to your hosting provider (e.g., Vercel, AWS, DigitalOcean).
- Integration with real-time WebSocket updates for live flight tracking.
- Multi-language support for broader accessibility.
- Enhanced analytics dashboard for administrators.
GoAirways frontend is designed to offer a powerful and user-friendly interface for managing airline operations. Its use of modern tools and technologies ensures scalability, performance, and security, making it an ideal choice for dynamic and complex applications.