slrpg-app/lib/src/core/constants/app_constants.dart

100 lines
3.1 KiB
Dart

import 'package:flutter/material.dart';
class AppConstants {
// API Configuration
// static const String apiBaseUrl = 'http://10.0.2.2:8090'; // Android emulator
static const String apiBaseUrl = 'https://slift.patanix.de';
static const String apiVersion = 'v1';
// Wendler 5/3/1 Constants
static const double trainingMaxPercentage = 0.9;
static const double upperBodyIncrement = 2.5; // kg
static const double lowerBodyIncrement = 5.0; // kg
// XP System
static const int baseXP = 1000;
static const double xpMultiplier = 1.25;
static const int maxLevel = 100;
// XP Rewards
static const int workoutCompleteXP = 100;
static const double volumeXPRate = 0.01; // XP per kg
static const int amrapBonusXPPerRep = 25;
static const int prBonusXP = 200;
static const int cycleCompleteXP = 500;
// Rounding Steps
static const double squatRoundingStep = 2.5;
static const double calisthenicsRoundingStep = 1.25;
// Default Inventory
static const double defaultBarWeight = 20.0;
static const List<double> defaultPlates = [
25,
25,
20,
20,
15,
15,
10,
10,
5,
5,
2.5,
2.5,
1.25,
1.25
];
// Resistance Bands (Color: Resistance in KG approx)
// Negative values imply assistance force
static const Map<String, double> defaultBands = {
'Blue': 30.0,
'Green': 20.0,
'Orange': 10.0,
'Red': 5.0,
};
// Bodyweight Limits
static const double minBodyweight = 40.0;
static const double maxBodyweight = 200.0;
// Animation Durations
static const Duration shortAnimation = Duration(milliseconds: 200);
static const Duration mediumAnimation = Duration(milliseconds: 400);
static const Duration longAnimation = Duration(milliseconds: 600);
// Storage Keys
static const String keyAuthToken = 'auth_token';
static const String keyUserId = 'user_id';
static const String keyLastSync = 'last_sync';
static const String keyIsFirstLaunch = 'is_first_launch';
}
class ApiEndpoints {
static const String login = '/api/collections/users/auth-with-password';
static const String register = '/api/collections/users/records';
static const String sync = '/api/v1/sync';
static const String cycleCreate = '/api/v1/cycle/create';
static const String cycleFinish = '/api/v1/cycle/finish';
static const String cycleCurrent = '/api/v1/cycle/current';
static const String statsHistory = '/api/v1/stats/history';
static const String statsSummary = '/api/v1/stats/summary';
static const String profileBodyweight = '/api/v1/profile/bodyweight';
static const String profileInventory = '/api/v1/profile/inventory';
static const String userUpdate = '/api/collections/users/records'; // + /:id
static const String userDelete = '/api/collections/users/records'; // + /:id
static const String profileReset = '/api/v1/profile/reset';
}
class ExerciseIds {
static const String squat = 'squat';
static const String pullup = 'pullup_weighted';
static const String dip = 'dip_weighted';
}
class ExerciseNames {
static const String squat = 'Back Squat';
static const String pullup = 'Weighted Pull-up';
static const String dip = 'Weighted Dip';
}