GithubHelp home page GithubHelp logo

aplinkosministerija / biip-medziokles-zurnalas Goto Github PK

View Code? Open in Web Editor NEW
1.0 3.0 0.0 1.78 MB

Mobile application for hunters: Medžioklės žurnalas

Home Page: https://play.google.com/store/apps/details?id=com.mobile_medziotojas

License: MIT License

JavaScript 6.85% Ruby 0.81% Objective-C 0.04% Objective-C++ 0.35% TypeScript 91.52% Shell 0.01% Kotlin 0.42%
biip biip-medziokle mobile-application react-native

biip-medziokles-zurnalas's Introduction

Medžioklės žurnalas

License GitHub issues GitHub stars

This repository contains the source code and documentation for the BĮIP mobile application Medžiotojo žurnalas, developed by the Ministry of Environment of the Republic of Lithuania.

Table of Contents

About the Project

The mobile application is intended for hunters of the Republic of Lithuania. It allows you to plan hunts and keep records of hunted animals in real time using a mobile phone.

Getting Started

Installation

  1. Clone the repository:

    git clone https://github.com/AplinkosMinisterija/biip-medziokles-zurnalas.git
  2. Install the required dependencies:

    cd biip-medziokles-zurnalas
    yarn install
  3. Set up the development environment:

    Follow the instructions at React Native Environment Setup.

Usage

  1. Set up environment variables:

    Copy the .env.example file to .env and provide the necessary values for the variables.

  2. Start emulator or connect your mobile device.

  3. Start the application on Android:

    yarn android

    (For iOS options, refer to package.json.)

Deployment

Production

To deploy the application to the production environment (both Google Play and App Store), run the publish action workflow and select type production. This is only allowed for the main branch.

Beta

The main branch of the repository is automatically deployed to the Google Play beta. Any changes pushed to the main branch will trigger a new deployment.

Internal testing

iOS - TestFlight

For iOS internal testing, we utilize TestFlight for distribution. To deploy any branch to TestFlight, simply initiate the Publish GitHub workflow with type testflight. Furthermore, any changes merged into the main branch automatically trigger a new deployment to TestFlight.

Android - Firebase App Distribution

For Android internal testing, we leverage Firebase App Distribution. To deploy any branch to the Firebase App Distribution, use the Publish GitHub workflow with a type starting with firebase (e.g., firebase-staging). Select the suffix based on the API for which you want to publish the app version, e.g., firebase-development uses the development API.

Contributing

Contributions are welcome! If you encounter issues or have suggestions for improvements, please open an issue or submit a pull request. For more information, refer to the contribution guidelines.

biip-medziokles-zurnalas's People

Contributors

dependabot[bot] avatar dovilemel avatar dovilemely avatar jaroslavsiroic avatar vycius avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

biip-medziokles-zurnalas's Issues

[Draft] Notificationu issues

backhand

  • Ismetant nepatvirtinta dalyvi is medziokles automatiskai kai pradedama medziokle gaunama du notifus: medziokle prasidejusi bei esate pasalintas is medziokles. Gal verta tik viena siust - esate ismestas ir tiek
  • "Medžiotojas Įmonės Vadovas šiandien baigė medžioklę Nr.180" yra parasoma notife, kai tave pakvecia i vykstancia jau medziokle bet kai nepatvirtini savo dalyvavimo (toks pat greiciausiai kai esi pasitvirtines). Techniskai tu nebuvai toj medzioklej, tai tiesiog gal parasyti "Jūs esate pašalintas iš medžioklės Nr.180". Is tokio teksto dar atrodo kad notifas eina visiems dalyviams tos medziokles, tai jauciu reiktu tokio, bet kai yra tasai dalyvis pasitvirtines
  • [nice to have] "Prašome registruotis į medžioklę Nr.180" kai startuoja medziokles registracija bei kai esi pridetas prie jau vykstancios medziokles. Siaip viskas ok su parasymu, bet gal parasyt "Esate pakviestas i vykstancia medziokle" ar kazkas tokio bet cia toks optional pointas kuri pamaciau tik

fronthand

  • notifai dingsta is Notification Center iOS
  • multiple notification services (should be one) subscriptions crash the app
  • check android

Perkelti `document` laukelį

Dabar užsienietis kuriamas

{
    "hunting": 2,
    "user": {
        "ticketNumber": "xxx",
        "firstName": "foo",
        "lastName": "foo",
        "email": "[email protected]",
        "nationality": "FOREIGNER"
    },
    "document": "data:image/png;xxx"
}

Tiesiog perkelti document laukelį prie user

{
    "hunting": 2,
    "user": {
        "ticketNumber": "xxx",
        "firstName": "foo",
        "lastName": "foo",
        "email": "[email protected]",
        "nationality": "FOREIGNER",
        "document": "data:image/png;xxx" // <------ CIA
    },
}

Statistikos duomenys

Sie duomenys dabar imami is state. Reiketu perdaryti i API uzklausas

  • Perrasyti statistikos duomenis i API uzklausas

Laiko (15 min) limito netikslumai

Reikia daugiau info kaip atkartoti!

Problema:
Offline uzgesinus ekrana, taimeris stovi tiek iOS tiek Android

Kaip atkartoti?

  1. Uzregistruoji ir uzrakini (liko 14:55)
  2. Palaukti pora minuciu
  3. Atrakini -> timeris skaiciuoja nuo 14:55

Sprendimas

  • Patikrinti ir sutvarkyti timeri

Burelio nariu medziokles

Sie duomenys dabar imami is state. Reiketu perdaryti i API uzklausas

  • Perrasyti burelio nariu medziokles i API uzklausas

Žemėlapių rewrite

  • Vieša dalis yra wordpressiniai žemėlapiai
  • App'e naudojami seni maps.biip.lt

Susipazinimo su taisyklemis reikalavimas

Problema:
Registracijai i medziokle dedant parasa nera reiklauajama susipazinti su taisyklemis, kaip tai reikalaujama tvirtinant per pusha

Sprendimas:

  • Reikalauti susipazinti su taisyklemis kaip tai yra per push'a

Endpointai

footprintTracks Trasos

kai reiks padarysiu.

footprintObservations Stebėjimai

su puslapiais:
GET /api/footprintObservations?sort=-id&query[huntingArea]=12

visi:
GET /api/footprintObservations/all?sort=-id&query[huntingArea]=12

create Stebėjimo sukūrimas

POST /api/footprintObservations

{
    "footprintTrack": 1,
    "eventTime": "2021-01-01 12:12:00",
    "huntingArea": xx
}

start Stebėjimo pradėjimas

POST /api/footprintObservations/start/5

end Stebėjimo užbaigimas

POST /api/footprintObservations/end/5

footprintRecords Stebėjimo įrašai

GET /api/footprintRecords?sort=-id&populate=photos&query[footprintObservation]=1
Vėlgi - galima /all jei be puslapių

POST /api/footprintRecords

{
    "footprintObservation": 2,
    "animal": 1,
    "count": 7,
    "direction": "S",
    "comment": "test",
    "photos": [ 1 ],
    "geom": {"lat": 54.73102, "long": 25.22792}
}

Prieš tai fotkes uploadinti
POST /api/footprintPhotos paduodant file

Parodyti popup kuomet pradedama registracija, pradedama medžioklė, pabaigiama medžioklė

Kuomet yra atidarytas apsas neateina pushai, todėl reiktų papildomai rodyti popupus su informacija, kad pradėta registracija, pradėta medžioklė, pabaigta medžioklė su mygtuku "Supratau". Šiuo metu aplikacijoje atsinaujinant šiek tiek pasikeičia informacija, kaip pvz dingsta mygtukas, tad ne visi gali suprasti kad jau galima medžioti ir registruoti gyvūnus.

Image

Pradėta registracija:

Pradėta registracija į medžioklę #77!
Prašome atidaryti medžioklę #77 ir patvirtinti savo dalyvavimą medžioklėje.
Mygtukas - Supratau

Pradėta medžioklė:

Medžioklė #77 prasidėjo!
Galite pradėti medžioti ir registruoti sumedžiotus gyvūnus.
Mygtukas - Supratau

Pabaigta medžioklė:

Medžioklė #77 baigta!
Medžioklė yra baigta.
Mygtukas - Supratau

Loguose saugoti kada paspaudei supratau.

Patikrinti:

  • Ar ateina push'as kai appsas atidarytas?
  • Ar galim kazkaip suhandlint push'a jei jis neateina atsidarius apps'a?

Nerodyti "pakviete" informacijos, jei tai nera svecias

Problema
Jei asmuo yra pakviestas i medziokle prie jo korteles yra rodoma "Pakviete" informacija. Si informacija yra reikalinga atvaizduoti tik jei pakviestas zmogus yra svecias

Sprendimas

  • Atvaizduoti "Pakviete" lauka tik tada, jei medziotojas yra svecias

Appso atnaujinimo label'io nesklandumai

Issokus pranesimui kad yra nauja versija ir atnaujinus app, o po to ji paleidus lieka degti pranesimas kad yra nauja versija, kol jo neuzgesini paspaudus atnaujinti, tada uzgesta ir lieka pranesimas is servo, susipazinti su taisyklemis

Tab'u likuciai appse

  • "Mano medžioklės" requestuos'e pridėti &scope[]=my ir nuimti checkbox
  • Tiek "Mano medžioklės" tiek MPV medžioklėse pridėti rikiavimo parametrus

Rikiavimas (today imamas iš state, palieku sau, kad nepamirščiau):

Today: sort[]=-status&sort[]=startDate
Future: sort[]=startDate
Past: sort[]=-startDate (<-- atkreipti dėmesį į minusiuką, kad atbulai)

Sutikrinti loading busenas

Image

Problema
Kartais refresh / loader uzsifreezina. Reikia rasti pagrindine priezasti

Sprendimas:

  • Loaderis turetu nepakibti ir issijungti atsinaujinus duomenims

15 min taimerio problemos off line režime

15 min laikrodis offline veikia kol screen is on. Kai po psuvlandzio pasiziurai jis lyg ir eina bet rodo dar 13 min. Paskui perjungus i kita langa ir gryzus laikas rodo kad pasibaiges.

Netipiniai ivykiai

Problema:

  • Pasirenki auto ivyki, liepia pildyti aplinkybes - Ok, tačiau ivykis neparaudonuoja ir jo korteleje neraso kad tai netipinis - autoivykis
  • Pasirenki netipini ivyki - serganti, liepia pildyti aplinkybes - Ok, tačiau ivykis neparaudonuoja ir jo korteleje neraso kad tai netipinis - sergantis

Sprendimas

  • Igyvendinti sprendima, kad ivykis butu netipinis

@arunas-smala komentaras:
matau kad frontas man nepaduoda, t.y. gaunu atributus {"horns": {"left": 0, "right": 0}, "category": "MALE", "comments": [{"text": "Hhh", "createdAt": "2024-02-02T08:36:37.833Z"}]}

O as tikrinu

          if (params.attributes?.lootCase) {
            switch (params.attributes.lootCase) {
              case LootCaseType.CAR_ACCIDENT:
                violations.push(Violation.CAR_ACCIDENT);
                break;

              case LootCaseType.SICK_OR_HURT:
                violations.push(Violation.SICK_OR_HURT);
                break;
            }
          }

t.y. turetu buti attributes.lootCase = 'CAR_ACCIDENT' arba SICK_OR_HURT, o dabar nieko negaunu netipiniais atvejais

Limitai WEB

Limitų gavimas

Paduodant ?huntingArea= mūsų id (ne mpv_id)

GET /api/limitedAnimals/all?huntingArea=133&populate=stats

Mano statistika - nepaduodant huntingArea

GET /api/limitedAnimals/all?populate=stats

Limitų prašymas

POST /api/limitsRequests/request

{
    "huntingArea": 133,
    "requests": [{
        "limitedAnimal": 2,
        "amount": 10
    }]
}

Masyve gali būti daug/visi limitedAnimals.

Pakartotinai prašant - naudojamas tas pats endpointas. Inputus autofilinti iš limitų gavimo pending reikšmės

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.