React native application to save words in dictionaries.
Simple mobile application to save words in dictionaries, built with react-native and react-native-firebase.
Click on the picture to watch a brief video ↑
I made this application for personal usage and is not intended to be on Apple / Google stores, you will have to create your own Firebase project.
Email/Password
sign-in provider from the Firebase console (Authentication section).Database
-> Rules
and copy paste the following snippet:service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth.uid != null;
}
}
}
This rule allows only authenticated user to read / write into the database.
react-native
on your computer. The project is not using Expo, as a result you have to follow the instructions from the React Native CLI Quickstart
section of the official documentation.
Make sure you are able to launch an Hello World react-native
application before continuing!
git clone https://github.com/akiver/wordsreminder.git
(or download the project archive).cp .env.example .env
yarn
(never tested with npm
)Follow the instructions below for your target platform.
Follow common steps from the setup section before continuing!
sudo gem install cocoapods
(if you doesn't have CocoaPods installed on your MAC).com.myusername.wordsreminder
).GoogleService-Info.plist
into ios/WordsReminder/GoogleService-Info.plist
yarn pod
yarn ios
(will run the app in simulator)Follow common steps from the setup section before continuing!
google-services.json
from the project settings of the firebase console.package_name
to com.wordsreminder
.android/app/google-services.json
.yarn android
(will run in simulator).Follow iOS steps from the setup section before continuing!
yarn global add ios-deploy
(Required to install the application wihtout xCode)yarn ios:release --device="Device name"
You can find your device's name from Settings
-> General
-> About
.Follow Android steps from the setup section before continuing!
yarn android:release --deviceId="Device ID"
You can find your device ID with adb devices
.End-to-end tests are made with Detox and it uses a real Firestore database.
When building the application for E2E tests, the Firestore collections names differ from those used in the "real" application.
Default names should be fine but you can change it from the .env
file.
All variables with E2E_
prefix are related to E2E tests.
Each test suites must be able to run independently.
You can run 1 specific test suites with yarn e2e:test:ios e2e/tests/sign-in.test.ts
for example.
Before running yarn e2e:build:ios
or yarn e2e:build:android
, make sure to kill any Metro processes, otherwise it may use the wrong collections names if Metro was started by yarn ios
or yarn android
!
json
file) from the Firebase console https://console.firebase.google.com/project/PROJECT-ID/settings/serviceaccounts/adminsdk (replace PROJECT-ID by your Firebase project ID in the URL).e2e
folder and rename it to google-services.json
.E2E_xxx
variables from the .env
if needed.yarn e2e:build:ios
yarn e2e:test:ios
When running tests from the simulator, make sure the keyboard is visible, otherwise tests will fail because typing will not work! (it's configurable from Hardware => Keyboard => Toggle software keyboard)
If you want to run E2E tests with the release build, use yarn e2e:build:ios:release
then yarn e2e:test:ios:release
.
yarn e2e:start
yarn e2e:build:android
yarn e2e:test:android
If you want to run E2E tests with the release build, use yarn e2e:build:android:release
then yarn e2e:test:android:release
.
Migrations allow to change database scheme, data...
All migrations must be inside the migrations
folder and export a run
function.
PROJECT_ID
by your project ID in the .env
file, your project ID is available from the Firebase console..json
file to serviceAccountKey.json
and paste it into the migrations
folder.yarn migrate
To generate a svg into a React component:
npx @svgr/cli --icon --native file.svg