⚠️ Strictly Confidential - Internal SoftMaji Developer Team Only ⚠️

Navigation

1. Data Security & Architecture

Unlike standard apps that rely on third-party services like Firebase, GeoStamp operates on a 100% self-hosted Pure SQL environment.

  • Strict Routing Protection: All files are protected by the SECURE_ENTRY constant. Direct file access is forbidden. All API requests MUST route through index.php.
  • No Third-Party Tracking: All user profiles and feedback are stored directly on the SoftMaji VPS.
  • Stateless JWT Auth: Our API uses a custom-built, highly secure JWT system. The server does not keep active sessions for the mobile app, ensuring lightning-fast performance.
  • Local Storage Priority: Captured photos are stamped and saved locally on the user's Android device gallery to preserve privacy. Images are never uploaded to our servers.

2. Testing with Postman

Before integrating with Flutter, developers MUST test the endpoints via Postman using real JSON payloads.

A Authenticate User (Google Login)

POST https://geosnap.softmaji.com/api/v1/auth/google-login
{ "id_token": "eyJhbGciOiJSUzI1NiIsImtpZ... (Obtain this from Google OAuth playground for testing)" }

Expected Success Response (200 OK)

{ "message": "Login successful", "token": "eyJ0eXAiOiJKV1QiLCJhb... (SAVE THIS JWT TOKEN)", "user": { "id": 1, "name": "Vishal Sharma", "email": "vishal@softmaji.in" } }

B Fetch User Profile

GET https://geosnap.softmaji.com/api/v1/user/profile

Header: Authorization: Bearer {YOUR_JWT_TOKEN}

Expected Success Response (200 OK)

{ "message": "Profile retrieved successfully", "data": { "id": 1, "email": "vishal@softmaji.in", "name": "Vishal Sharma", "created_at": "2026-04-07 14:06:19" } }

3. Flutter Implementation Details

Google Sign-In Setup

Ensure your Android build.gradle has the SHA-1 key configured. Use the google_sign_in package to prompt the user, extract the idToken, and pass it to our API as tested in Postman above.

The Canvas Overlay Engine

To ensure the app works flawlessly offline, you must use the Dart image package. Capture the raw photo, pull sensor data via geolocator, and draw text and logos onto the image matrix before saving it to the gallery.

4. Lifetime Free External APIs

Under strict app rules, no Google Maps SDK or paid services are allowed. Use these exact endpoints inside the Flutter app:

Address Details (Reverse Geocoding)

GET https://nominatim.openstreetmap.org/reverse?format=json&lat=26.8467&lon=80.9462

Current Weather Data

GET https://api.open-meteo.com/v1/forecast?latitude=26.8467&longitude=80.9462¤t_weather=true