Add initial implementation of Map SDK and example app

- Create README for the main repository and example app
- Implement example app with MapView and Marker components
- Add package.json for example app with necessary scripts and dependencies
- Create Map SDK package with TypeScript wrapper around react-native-maps
- Define TypeScript configuration for the SDK
This commit is contained in:
2026-01-29 22:48:20 +05:30
commit 8710bc7a7f
10 changed files with 161 additions and 0 deletions

11
README.md Normal file
View File

@@ -0,0 +1,11 @@
# Map SDK Monorepo
This repository contains a TypeScript wrapper package (`@lynkedup/map-sdk`) that builds on `react-native-maps`, plus an `example` React Native app demonstrating usage.
Quick commands:
- Install deps: `npm run bootstrap`
- Build SDK: `npm run build`
- Start example: `npm run start:example`
See package READMEs for platform-specific setup (iOS/Android) and usage notes.

21
example/App.tsx Normal file
View File

@@ -0,0 +1,21 @@
import React from 'react';
import { SafeAreaView, StyleSheet } from 'react-native';
import { MapView, Marker } from '@lynkedup/map-sdk';
export default function App() {
return (
<SafeAreaView style={styles.container}>
<MapView
style={styles.map}
initialRegion={{ latitude: 37.78825, longitude: -122.4324, latitudeDelta: 0.0922, longitudeDelta: 0.0421 }}
>
<Marker coordinate={{ latitude: 37.78825, longitude: -122.4324 }} />
</MapView>
</SafeAreaView>
);
}
const styles = StyleSheet.create({
container: { flex: 1 },
map: { flex: 1 }
});

15
example/README.md Normal file
View File

@@ -0,0 +1,15 @@
# Example App
This example demonstrates usage of `@lynkedup/map-sdk`.
Setup:
1. From repo root run `npm run bootstrap` to install workspace packages.
2. From `example` run `npm install` to install native deps.
3. iOS: run `npx pod-install ios` and add your Google Maps API key if you use Google provider.
4. Android: ensure Google Play services and API keys are set in `AndroidManifest.xml` if using Google maps.
Run:
- `npm run ios` or `npm run android` from `example` folder.
See `react-native-maps` docs for platform-specific instructions: https://github.com/react-native-maps/react-native-maps

16
example/package.json Normal file
View File

@@ -0,0 +1,16 @@
{
"name": "example",
"private": true,
"version": "0.0.1",
"scripts": {
"start": "react-native start",
"ios": "react-native run-ios",
"android": "react-native run-android"
},
"dependencies": {
"react": "18.2.0",
"react-native": "0.71.0",
"react-native-maps": "^1.3.2",
"@lynkedup/map-sdk": "*"
}
}

13
package.json Normal file
View File

@@ -0,0 +1,13 @@
{
"name": "mapsdk-monorepo",
"private": true,
"workspaces": [
"packages/*",
"example"
],
"scripts": {
"bootstrap": "npm install",
"build": "npm run -w @lynkedup/map-sdk build",
"start:example": "npm run -w example start"
}
}

View File

@@ -0,0 +1,33 @@
# @lynkedup/map-sdk
A small TypeScript wrapper around `react-native-maps` to provide a consistent API and typed components.
## Usage
Install peer deps in your app:
```
npm install react-native react-native-maps
# and add this package via workspace or npm/yarn
```
Basic usage:
```ts
import React from 'react';
import { MapView, Marker } from '@lynkedup/map-sdk';
export default function App() {
return (
<MapView
style={{ flex: 1 }}
initialRegion={{ latitude: 37.78825, longitude: -122.4324, latitudeDelta: 0.0922, longitudeDelta: 0.0421 }}
>
<Marker coordinate={{ latitude: 37.78825, longitude: -122.4324 }} />
</MapView>
);
}
```
## Notes
- This package delegates to `react-native-maps` for platform implementations. Follow `react-native-maps` docs for iOS/Android setup (Google Maps API key, pods, manifest permissions).

View File

@@ -0,0 +1,25 @@
{
"name": "@lynkedup/map-sdk",
"version": "0.1.0",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"license": "MIT",
"files": [
"dist"
],
"scripts": {
"build": "tsc -p tsconfig.json",
"lint": "eslint . --ext .ts,.tsx"
},
"peerDependencies": {
"react": ">=17",
"react-native": ">=0.70",
"react-native-maps": "^1.3.2"
},
"devDependencies": {
"typescript": "^5.0.0",
"eslint": "^8.0.0",
"@types/react": "^18.0.0",
"@types/react-native": "^0.70.0"
}
}

View File

@@ -0,0 +1,10 @@
import React from 'react';
import RNMapView, { MapViewProps as RNMapViewProps } from 'react-native-maps';
export type MapProps = RNMapViewProps;
const MapView: React.FC<MapProps> = (props) => {
return <RNMapView {...props}>{props.children}</RNMapView>;
};
export default MapView;

View File

@@ -0,0 +1,2 @@
export { default as MapView } from './MapView';
export { Marker, Polyline, PROVIDER_GOOGLE } from 'react-native-maps';

View File

@@ -0,0 +1,15 @@
{
"compilerOptions": {
"target": "ES2019",
"module": "CommonJS",
"jsx": "react",
"declaration": true,
"outDir": "dist",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true
},
"include": [
"src/**/*"
]
}