Softrans Reservations
Reservations web application for rail passenger transport company developed with Angular.
-
Client
Softrans
-
Industry
Passenger Transportation
-
Provided services
Web development Maintenance & Support
-
Started year
2023
- View project website
Overview
Softrans is a rail passengers transport company from Romania that needed a web application for their customers to buy online tickets or straight from the train.
Technologies
Project Description
Softrans Abonamente is an Angular-based web application for Romanian train ticket reservations and subscriptions. The application allows users to purchase train tickets, reserve seats, and buy monthly/periodic subscriptions for train travel.
Technology Stack
- Frontend: Angular 19 with TypeScript
- UI Framework: Angular Material
- Styling: SCSS with custom component styles
- State Management: Angular signals and reactive forms
- HTTP Client: Angular HttpClient with custom interceptors
- Testing: Jasmine/Karma for unit tests, Cypress for E2E tests
- Build Tool: Angular CLI with custom webpack configuration
- Payment Integration: MobilPay payment gateway
Key Features
- User Authentication: Login, registration, password reset, email verification
- Train Reservations: Multi-step booking process with seat selection
- Subscriptions: Monthly/periodic train pass purchases
- Discount System: Various discount types and promotional codes
- Real-time Seat Availability: Dynamic seat selection with conflict resolution
- Payment Processing: Secure online payments with MobilPay
- Invoice Generation: Automatic invoice creation for purchases
- Multi-language Support: Romanian interface with proper localization
Application Architecture
- Modular Structure: Feature-based organization with core, shared, and screen modules
- Service Layer: Centralized business logic and API communication
- Component Hierarchy: Reusable components for train visualization, forms, and UI elements
- Route Guards: Authentication and authorization protection
- Interceptors: HTTP request/response handling for loading, errors, and content hashing
Business Logic
- Pricing Model: Distance-based, time-based, and seat-type pricing
- VAT Calculation: Dynamic VAT rate application based on current regulations
- Reservation States: Draft → Open → Confirmed → Done/Cancelled workflow
- Seat Management: Real-time seat locking and availability checking
- Discount Engine: Flexible discount application with validation rules
Development Environment
- Version Control: Git with conventional commit messages
- Code Quality: ESLint, Prettier, and custom linting rules
- CI/CD: Automated testing and deployment pipelines
- Environment Configuration: Development, staging, and production environments
API Integration
- Backend API: RESTful API at
https://api.softrans.ro/api/v1 - Authentication: Session-based with JWT-like tokens
- Data Models: Comprehensive TypeScript interfaces for all entities
- Error Handling: Structured error responses with user-friendly messages
Testing Strategy
- Unit Tests: Component and service testing with Jasmine
- E2E Tests: Critical user flows with Cypress
- Test Data: Mock data and fixtures for consistent testing
- Coverage: High test coverage for business-critical functionality
Performance Considerations
- Lazy Loading: Route-based code splitting
- Change Detection: OnPush strategy for optimized rendering
- Bundle Optimization: Tree shaking and asset optimization
- Caching: HTTP caching and local storage for user preferences
Security Features
- Input Validation: Comprehensive client and server-side validation
- XSS Protection: Content sanitization and secure rendering
- CSRF Protection: Request hashing and validation
- Secure Payments: PCI-compliant payment processing
- Data Encryption: Sensitive data encryption