Plan your NC State schedule!
To get started with this project, ensure you have the Flutter SDK installed on your machine. Check out these resources to get familiar with Flutter faster.
- Flutter SDK
- Android Studio / VS Code with Flutter extensions
- An emulator or physical device for testing
-
Clone the repository:
git clone https://github.com/NCSU-App-Development-Club/coursepilot.git cd coursepilot -
Install dependencies:
flutter pub get
-
Run build runner in watch mode to generate necessary files:
flutter pub run build_runner watch --delete-conflicting-outputs
Do this in a separate terminal window so it can keep running while you work on the project.
-
Set up an emulator, connect a physical device, or use Flutter's web support to run the app.
You can select your target device in your code editor or run:
flutter devices
to see available devices.
In VS Code, you can select the device from the bottom right corner or use the command palette (
Ctrl+Shift+PorCmd+Shift+P) and search for "Flutter: Select Device". -
Run the app:
flutter run
This will launch the app on your selected device.
Add
-d <device_id>to specify a device if needed.
This project follows a standard Flutter application structure. Here is a guide to the key files and directories for newcomers:
android/: Contains the native Android project files. This is where you would make Android-specific configurations (like permissions inAndroidManifest.xml).ios/: Contains the native iOS project files. Similar to the android folder, used for iOS-specific configurations (likeInfo.plist).web/: Contains the web entry point and assets for the web version of the app.lib/: This is where almost all of the code lives. It contains the Dart code that runs the app.main.dart: The entry point of the Flutter application.constants.dart: Contains constant values used throughout the app if any.models/: Contains data models used in the app.pages/: Contains the UI screens (widgets) for the app.services/: Contains business logic and data handling services.
test/: Contains unit and widget tests to ensure the app works as expected.analysis_options.yaml: Configures the linter rules for the project to ensure code quality.pubspec.yaml: The project's configuration file. It manages dependencies (external libraries), assets (images, fonts), and app metadata (version, description).
- Checkout the development branch.
- Create a new feature branch.
- Commit your changes.
- Push to the branch and open a Pull Request.