init
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
# Scalar360 Attendance (Flutter) — Employee self-service
|
||||
|
||||
Per-employee mobile app for **Scalar360 People Operations**. Employees sign in with
|
||||
their work email + PIN and:
|
||||
- **Clock in / out** with GPS geo-fence (and optional selfie)
|
||||
- View **leave** balances, apply for leave, track requests
|
||||
- View **payslips**
|
||||
- **Managers** additionally approve their team's leave and see the team's status
|
||||
|
||||
> Separate app — no relation to `fist_attendance`. Talks only to the Scalar360 API
|
||||
> using a dedicated **employee** auth (`/api/v1/employee/auth` + `/api/v1/me`).
|
||||
|
||||
```
|
||||
Employee app ──(employee JWT)──▶ https://api.scalar360.in
|
||||
sign in POST /api/v1/employee/auth/login { identifier: email, pin }
|
||||
clock in/out POST /api/v1/me/attendance/check-in|check-out { lat, lng, selfie? }
|
||||
my leave GET/POST /api/v1/me/leave/...
|
||||
payslips GET /api/v1/me/payslips
|
||||
team (manager) GET /api/v1/me/team, /me/team/leave, approve|reject
|
||||
```
|
||||
|
||||
## Setup (HR, once per employee)
|
||||
In the Scalar360 web app: **People Operations → Employees → open employee → Account & access** →
|
||||
set a **Login email**, choose **Role** (Employee/Manager) and **Reporting manager**, save,
|
||||
then **Generate login PIN** and share it with the employee. Set the office geo-fence in
|
||||
**People Operations → Settings → Attendance** (office latitude/longitude, radius, *Require geo-fence*).
|
||||
|
||||
## Build & run
|
||||
```bash
|
||||
cd scalar_attendance
|
||||
flutter create . # generates android/ ios/ (keeps lib/ & pubspec.yaml)
|
||||
flutter pub get
|
||||
flutter run # use a real device for GPS + camera
|
||||
```
|
||||
|
||||
### Permissions (add after `flutter create .`)
|
||||
**Android** — `android/app/src/main/AndroidManifest.xml` inside `<manifest>`:
|
||||
```xml
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.CAMERA" />
|
||||
```
|
||||
**iOS** — `ios/Runner/Info.plist`:
|
||||
```xml
|
||||
<key>NSLocationWhenInUseUsageDescription</key>
|
||||
<string>Used to confirm you are at the office when you check in.</string>
|
||||
<key>NSCameraUsageDescription</key>
|
||||
<string>Used to capture a selfie when you check in.</string>
|
||||
```
|
||||
|
||||
## Notes
|
||||
- Requires an employee account with a login email + PIN (set by HR as above).
|
||||
- Geo-fence is enforced by the server: if *Require geo-fence* is on, a check-in outside
|
||||
the office radius is rejected with the distance.
|
||||
- The full PDF payslip is available on the web portal; the app shows the breakdown.
|
||||
Reference in New Issue
Block a user