이전 flutter로 토이프로젝트를 시작할 때 현재 Backend 개발자로 현업을 진행하고 있기 때문에 풀스택으로 진행하고자 하였다.
하지만 FE도 구현하고 BE도 구현하고자 하다보니 두 마리의 토끼를 둘 다 놓쳐 해당 프로젝트를 마무리 짓지 못한 경험이 있다.
그러다보니 인증, DB연결과 같은 역할을 해주는 서비스를 찾다 firebase
와 supabase
를 찾게 되었다.
결론부터 이야기하자면 필자는 supabase
를 선택하였으며 선택한 이유는 아래와 같다.
Postgresql
를 이용 (firebase
는 NoSql
기반)이 2가지가 supabase
를 선택하는데 많은 영향을 주었다. (나중에 서비스가 커지게 된다면 NoSql
보다 PG
가 마이그레이션 하기 수월할 것도 포함이다.)
프로젝트 생성은 간단하다. 깃허브 계정을 이용하여 supabase
에 가입하였으며 Organization을 생성한 후 project를 생성해주기만 하면 된다.
Region
은 다양하게 제공되며 필자는 Seoul
을 선택하였다. DB 비밀번호도 설정이 가능하다.
Flutter에서 supabase
를 이용하려면 아래와 같은 명령어를 이용하여 라이브러리를 추가하면 된다.
flutter pub add supabase_flutter
라이브러리를 추가하였다면 project를 생성하였을 때 부여받은 Project URL
과 API Key
를 이용하여 Flutter에 적용할 수 있다.
2개의 키는 프로젝트 Home에서 조금만 내리면 확인이 가능하다.
App이 실행되는 main.dart
로 이동하여 아래와 같은 코드만 추가해주면 적용이 끝난다.
@ constant.dart
// 1
final SUPABASE_URL = dotenv.get('SUPABASE_URL');
final SUPABASE_API_KEY = dotenv.get('SUPABASE_API_KEY');
@ main.dart
void main() async {
WidgetsFlutterBinding.ensureInitialized();
const envDivision = String.fromEnvironment('env', defaultValue: 'dev');
await dotenv.load(fileName: './env/.env.$envDivision');
// 2
await Supabase.initialize(
url: SUPABASE_URL,
anonKey: SUPABASE_API_KEY,
debug: dotenv.get('FLUTTER_ENV', fallback: 'development') == 'development',
);
runApp(const MyApp());
}
// 3
final supabase = Supabase.instance.client;
supabase
의 key값들을 정의한다.supabase
라이브러리를 이용하여 supabase
를 초기화 해준다.supabase
의 client 인스턴스를 변수에 선언한다.추가적으로 supabase
를 초기화를 할 때 부여할 수 있는 옵션들이 있다 해당 옵션들은 supabase_flutter_initializing에서 확인이 가능하다.
정상적으로 key값들을 이용하여 supabase
의 인스턴스화를 성공했다면 터미널에서 아래와 같은 로그를 볼 수 있을 것이다.