VentureLens is a sophisticated iOS application that empowers entrepreneurs and business analysts by providing comprehensive business intelligence and market insights. It aggregates and analyzes data from various sources (including ProductHunt, market databases, and financial reports) to generate detailed business ideas, complete with financial projections, market analysis, and strategic recommendations.
- 💡 AI-powered business idea generation and validation
- 📊 Comprehensive financial projections and analysis
- 📈 Market trend analysis and competitor insights
- 🔍 Data aggregation from multiple sources (ProductHunt, market databases)
- 📑 Detailed business strategy recommendations
- 📱 Interactive reports and visualizations
- 🔄 Real-time market data updates
- 🔒 Secure data storage with SwiftData
- Swift 6
- SwiftUI
- SwiftData
- Combine
- XCTest
- MVVM-C Architecture
- Tuist for project generation
- SwiftFormat for code quality
- Supabase - Backend as a Service for authentication, functions, and data storage
- SwiftFormat - Code formatting
- Tuist - Project generation and dependency management
- iOS 18.0+
- Xcode 16.0+
- Swift 6.0+
- Tuist 3.0+
- Install Homebrew (if not already installed):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"- Install required tools:
brew install tuist
brew install swiftformat- Set up environment variables:
cp .env.example .envEdit .env with your configuration values:
SUPABASE_URL: Your Supabase project URLSUPABASE_KEY: Your Supabase API key
- Clone the repository:
git clone https://github.com/yourusername/VentureLens.git
cd VentureLens- Generate Xcode project:
./scripts/load_env_and_generate.sh- Open the generated Xcode project:
open VentureLens.xcworkspaceVentureLens/
├── Projects/
│ ├── App/
│ ├── AppResources/
│ ├── Core/
│ ├── Dependencies/
│ ├── Networking/
│ └── UI/
├── Tuist/
│ ├── Package.swift
│ └── ProjectDescriptionHelpers/
├── Scripts/
│ ├── load_env_and_generate.sh
│ ├── swiftformat.sh
│ └── update_versions.sh
├── xcconfigs/
├── .env.example
├── Tuist.swift
└── Workspace.swift
VentureLens follows the MVVM-C (Model-View-ViewModel-Coordinator) architecture pattern with a modular approach using Tuist for dependency management:
- Models: Core data structures like
Idea,User, andReportin the Networking module that define the domain entities - Views: SwiftUI views organized by feature (Authentication, Ideas, Profile) in the UI module
- ViewModels: Business logic and state management (e.g.,
AuthViewModel,IdeaListViewModel) handling data flow and user interactions - Coordinators: Navigation control through
NavigationCoordinatormanaging view state transitions - Protocols: Interface definitions (
Authentication,APIClientProtocol) enabling loose coupling - Adapters: Concrete implementations (e.g.,
SupabaseAuthClientAdapter) bridging external services - Dependencies: Centralized dependency management through the Dependencies module
- App: Main application target and entry point
- AppResources: Shared resources (colors, assets, localization)
- Core: Fundamental utilities and extensions
- Dependencies: External service integrations and dependency management
- Networking: API client, models, and network protocols
- UI: Feature-specific views and view models
- Dependency Injection through protocol-based interfaces
- Protocol-oriented programming for flexible implementations
- Combine for reactive state management
- Async/await for concurrent operations
- Environment-based configuration management
The project uses Tuist for project generation and dependency management. The project must be generated using the provided script to ensure environment variables are properly loaded:
./scripts/load_env_and_generate.shThis script will:
- Load environment variables from
.env - Pass them to the Tuist generate command
- Generate the Xcode project with the correct configuration
./scripts/load_env_and_generate.sh- Generates Xcode project with environment variables./scripts/swiftformat.sh- Formats code according to project standards./scripts/update_versions.sh- UpdatesMARKETING_VERSIONandCURRENT_PROJECT_VERSIONinxcconfigs/App.xcconfigandxcconfigs/Framework.xcconfig.- Usage:
./Scripts/update_versions.sh [-m YY.MM.N] [-v] -m: Optionally provide a specific marketing version (e.g., 24.07.1).- If
-mis not provided, CalVer (YY.MM.release) is used forMARKETING_VERSION, incrementing the release based on the current date and existing version. CURRENT_PROJECT_VERSION(build number) is always incremented from the value inApp.xcconfig.
- Usage:
- Fork the repository
- 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
Please ensure you:
- Follow the SwiftFormat rules for code formatting
- Add tests for new features
- Update documentation as needed
- Run the test suite before submitting
This project is licensed under the Elastic License v2.0 (ELv2). The ELv2 allows you to use, copy, distribute, make available, and prepare derivative works of the software, as long as you do not provide the software to others as a managed service or include it in a free competitive product. See the LICENSE file for the complete license terms.
Key points of the ELv2:
- ✅ Use and modify the code for internal purposes
- ✅ Distribute the code as part of your non-competing applications
- ❌ Use the code to create a product that competes with VentureLens
- ❌ Provide VentureLens as a managed service to third parties
For more information about the Elastic License v2.0, visit Elastic License FAQ.