TikTok api
31
.env
Normal file
@@ -0,0 +1,31 @@
|
||||
SITE_DOMAIN=greenlenspro.com
|
||||
SITE_URL=https://greenlenspro.com
|
||||
|
||||
POSTGRES_DB=greenlns
|
||||
POSTGRES_USER=greenlns
|
||||
POSTGRES_PASSWORD=change-me-in-prod
|
||||
DATABASE_URL=postgresql://greenlns:change-me-in-prod@postgres:5432/greenlns
|
||||
|
||||
JWT_SECRET=change-me-in-prod
|
||||
|
||||
MINIO_ACCESS_KEY=greenlns-minio
|
||||
MINIO_SECRET_KEY=change-me-in-prod
|
||||
MINIO_BUCKET=plant-images
|
||||
MINIO_PUBLIC_URL=https://greenlenspro.com/storage
|
||||
|
||||
OPENAI_API_KEY=
|
||||
OPENAI_SCAN_MODEL=gpt-5-mini
|
||||
OPENAI_HEALTH_MODEL=gpt-5-mini
|
||||
|
||||
REVENUECAT_WEBHOOK_SECRET=
|
||||
REVENUECAT_PRO_ENTITLEMENT_ID=pro
|
||||
|
||||
PLANT_IMPORT_ADMIN_KEY=greenlens-admin-2024
|
||||
|
||||
DISCORD_WEBHOOK_SALES_URL=
|
||||
DISCORD_WEBHOOK_DOWNLOADS_URL=
|
||||
|
||||
TIKTOK_CLIENT_KEY=awoihp5i4k4rraen
|
||||
TIKTOK_CLIENT_SECRET=TdnxlcQLNRXAy2PW0GsSlQTEqGeHgU7x
|
||||
TIKTOK_REDIRECT_URI=https://greenlenspro.com/api/tiktok/callback
|
||||
PLANT_IMPORT_ADMIN_KEY=greenlens-admin-2024
|
||||
2
app.json
@@ -2,7 +2,7 @@
|
||||
"expo": {
|
||||
"name": "GreenLens",
|
||||
"slug": "greenlens",
|
||||
"version": "2.2.9",
|
||||
"version": "2.3.0",
|
||||
"orientation": "portrait",
|
||||
"icon": "./assets/icon.png",
|
||||
"userInterfaceStyle": "automatic",
|
||||
|
||||
@@ -231,8 +231,10 @@ const TypingIndicator = ({ colors }: { colors: any }) => {
|
||||
export default function OnboardingChatScreen() {
|
||||
const router = useRouter();
|
||||
const posthog = useSafeAnalytics();
|
||||
const { session, isDarkMode, colorPalette, language } = useApp();
|
||||
const colors = useColors(isDarkMode, colorPalette);
|
||||
const { session, colorPalette, language } = useApp();
|
||||
// This screen is hardcoded dark (#131e14 backgrounds), so always use the
|
||||
// dark color set — theme-dependent text would be unreadable in light mode.
|
||||
const colors = useColors(true, colorPalette);
|
||||
const copy = getChatCopy(language);
|
||||
const { height } = useWindowDimensions();
|
||||
const compact = height < 700;
|
||||
|
||||
@@ -45,6 +45,9 @@ services:
|
||||
DISCORD_WEBHOOK_SALES_URL: ${DISCORD_WEBHOOK_SALES_URL:-}
|
||||
DISCORD_WEBHOOK_DOWNLOADS_URL: ${DISCORD_WEBHOOK_DOWNLOADS_URL:-}
|
||||
JWT_SECRET: ${JWT_SECRET:?JWT_SECRET is required}
|
||||
TIKTOK_CLIENT_KEY: ${TIKTOK_CLIENT_KEY:-}
|
||||
TIKTOK_CLIENT_SECRET: ${TIKTOK_CLIENT_SECRET:-}
|
||||
TIKTOK_REDIRECT_URI: ${TIKTOK_REDIRECT_URI:-https://greenlenspro.com/api/tiktok/callback}
|
||||
PLANT_IMPORT_ADMIN_KEY: ${PLANT_IMPORT_ADMIN_KEY:-}
|
||||
depends_on:
|
||||
postgres:
|
||||
|
||||
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "greenlens",
|
||||
"version": "2.2.9",
|
||||
"version": "2.3.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "greenlens",
|
||||
"version": "2.2.9",
|
||||
"version": "2.3.0",
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"@expo/vector-icons": "^15.0.3",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "greenlens",
|
||||
"version": "2.2.9",
|
||||
"version": "2.3.0",
|
||||
"main": "expo-router/entry",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
|
After Width: | Height: | Size: 548 KiB |
|
After Width: | Height: | Size: 920 KiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 1005 KiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 1.2 MiB |
@@ -0,0 +1,53 @@
|
||||
GreenLens Social Pack – 2026-07-07
|
||||
Topic: Why your plant keeps dropping leaves
|
||||
CTA variant tested: hard/soft hybrid — "Scan your plant" + domain.
|
||||
Format experiment: TikTok/Instagram 3:4 carousel, Facebook landscape key visual, X 2-image educational post.
|
||||
|
||||
TikTok / Instagram Carousel
|
||||
Title: Why your plant keeps dropping leaves
|
||||
Caption: Leaves dropping usually means the plant is reacting to a change. Start with the basics: water, light, and a quick leaf check before you add more fertilizer or repot.
|
||||
Hashtags: #PlantCare #Houseplants #GreenLens #PlantTips
|
||||
Images:
|
||||
MEDIA:C:\Users\timo\Documents\greenlens\GreenLens\social_out\2026-07-07_greenlens_leaf-drop_pack\greenlens_leaf_drop_slide_01.png
|
||||
MEDIA:C:\Users\timo\Documents\greenlens\GreenLens\social_out\2026-07-07_greenlens_leaf-drop_pack\greenlens_leaf_drop_slide_02.png
|
||||
MEDIA:C:\Users\timo\Documents\greenlens\GreenLens\social_out\2026-07-07_greenlens_leaf-drop_pack\greenlens_leaf_drop_slide_03.png
|
||||
MEDIA:C:\Users\timo\Documents\greenlens\GreenLens\social_out\2026-07-07_greenlens_leaf-drop_pack\greenlens_leaf_drop_slide_04.png
|
||||
MEDIA:C:\Users\timo\Documents\greenlens\GreenLens\social_out\2026-07-07_greenlens_leaf-drop_pack\greenlens_leaf_drop_slide_05.png
|
||||
Format rationale: Save-worthy educational 3:4 carousel with one clear idea per slide and a soft final CTA.
|
||||
|
||||
Facebook
|
||||
Title: Why your plant keeps dropping leaves
|
||||
Caption: If leaves start dropping, don’t jump straight to fertilizer. Check whether watering changed, whether the plant is getting harsh direct sun, and whether the undersides of leaves show early pest signs.
|
||||
Hashtags: #PlantCare #Houseplants #GreenLens
|
||||
Image:
|
||||
MEDIA:C:\Users\timo\Documents\greenlens\GreenLens\social_out\2026-07-07_greenlens_leaf-drop_pack\greenlens_leaf_drop_facebook_key_visual.png
|
||||
Format rationale: Landscape key visual works better for feed readability and link/context posts.
|
||||
|
||||
X / Twitter
|
||||
Post copy: Dropping leaves usually means your plant is reacting to stress — often water changes, harsh light, or early pests.
|
||||
|
||||
Quick check:
|
||||
1. Soil moisture
|
||||
2. Light changes
|
||||
3. Underside of leaves
|
||||
|
||||
Don’t fix everything at once. Change one thing, then observe.
|
||||
Hashtags: #PlantCare #Houseplants
|
||||
Images for X: C:\Users\timo\Documents\greenlens\GreenLens\social_out\2026-07-07_greenlens_leaf-drop_pack\greenlens_leaf_drop_slide_01.png, C:\Users\timo\Documents\greenlens\GreenLens\social_out\2026-07-07_greenlens_leaf-drop_pack\greenlens_leaf_drop_slide_04.png
|
||||
Format rationale: 2-image educational post to vary away from text-only while staying concise.
|
||||
|
||||
A/B-test hint
|
||||
Alternative hook: "Leaf drop? Change one thing first"
|
||||
Test first: current hook, because it names the symptom directly and should attract beginner plant owners.
|
||||
|
||||
Measurement criteria
|
||||
- Saves on Instagram/TikTok
|
||||
- Comments with plant symptoms
|
||||
- Profile clicks
|
||||
- Website clicks to greenlenspro.com
|
||||
|
||||
Asset map
|
||||
- Instagram/TikTok carousel: slides 01–05
|
||||
- Facebook: greenlens_leaf_drop_facebook_key_visual.png
|
||||
- X/Twitter: slide 01 + slide 04
|
||||
- Internal preview: greenlens_leaf_drop_contact_sheet.png
|
||||
@@ -0,0 +1,11 @@
|
||||
file 'C:/Users/timo/Documents/greenlens/GreenLens/social_out/2026-07-08_greenlens_office-plants_pack/video_frames/frame_01.png'
|
||||
duration 1.6
|
||||
file 'C:/Users/timo/Documents/greenlens/GreenLens/social_out/2026-07-08_greenlens_office-plants_pack/video_frames/frame_02.png'
|
||||
duration 1.6
|
||||
file 'C:/Users/timo/Documents/greenlens/GreenLens/social_out/2026-07-08_greenlens_office-plants_pack/video_frames/frame_03.png'
|
||||
duration 1.6
|
||||
file 'C:/Users/timo/Documents/greenlens/GreenLens/social_out/2026-07-08_greenlens_office-plants_pack/video_frames/frame_04.png'
|
||||
duration 1.6
|
||||
file 'C:/Users/timo/Documents/greenlens/GreenLens/social_out/2026-07-08_greenlens_office-plants_pack/video_frames/frame_05.png'
|
||||
duration 1.6
|
||||
file 'C:/Users/timo/Documents/greenlens/GreenLens/social_out/2026-07-08_greenlens_office-plants_pack/video_frames/frame_05.png'
|
||||
|
After Width: | Height: | Size: 409 KiB |
|
After Width: | Height: | Size: 388 KiB |
|
After Width: | Height: | Size: 900 KiB |
|
After Width: | Height: | Size: 623 KiB |
|
After Width: | Height: | Size: 855 KiB |
|
After Width: | Height: | Size: 906 KiB |
|
After Width: | Height: | Size: 1.3 MiB |
@@ -0,0 +1,90 @@
|
||||
GreenLens Educational Social Pack - 2026-07-08
|
||||
|
||||
Thema: Pflanzen fürs Büro / low-drama desk plants
|
||||
A/B-Variante: Variante A = stärkerer Hook + softer CTA
|
||||
Format-Test: Carousel als Hauptformat, Slideshow-Video als A/B-Variante aus denselben Slides
|
||||
Posting-Status: Draft only. Kein Live-Posting ohne ausdrückliches GO von Timo. Brand-Gating: nur GreenLens Pro Accounts.
|
||||
|
||||
Research-Hinweis intern:
|
||||
- RHS: Zimmerpflanzen können psychologisches Wohlbefinden unterstützen; Claims sollten vorsichtig formuliert werden.
|
||||
- Cummings & Waring 2020 / American Lung Association: starke Houseplants-clean-the-air-Claims sind für normale Innenräume überzogen. Deshalb kein Air-purifier-Versprechen auf Slides/Captions.
|
||||
|
||||
Plattform: Instagram
|
||||
Titel: 3 desk plants that handle workweeks
|
||||
Caption:
|
||||
Not every office plant needs daily attention.
|
||||
|
||||
If your workweek gets busy, start with plants that forgive normal beginner mistakes:
|
||||
|
||||
1. ZZ plant - low-drama and tolerant
|
||||
2. Snake plant - likes drying out between watering
|
||||
3. Peace lily - useful reminder plant, but avoid soggy soil
|
||||
|
||||
Save this before your next plant shop trip.
|
||||
|
||||
Hashtags: #PlantCare #Houseplants #IndoorPlants #GreenLensPro
|
||||
Specs: 5-slide 3:4 carousel, 1080x1440 PNG. A/B video: 9:16 slideshow MP4 from same slides.
|
||||
MEDIA:C:\Users\timo\Documents\greenlens\GreenLens\social_out\2026-07-08_greenlens_office-plants_pack\greenlens_office_plants_slide_01_3x4.png
|
||||
MEDIA:C:\Users\timo\Documents\greenlens\GreenLens\social_out\2026-07-08_greenlens_office-plants_pack\greenlens_office_plants_slide_02_3x4.png
|
||||
MEDIA:C:\Users\timo\Documents\greenlens\GreenLens\social_out\2026-07-08_greenlens_office-plants_pack\greenlens_office_plants_slide_03_3x4.png
|
||||
MEDIA:C:\Users\timo\Documents\greenlens\GreenLens\social_out\2026-07-08_greenlens_office-plants_pack\greenlens_office_plants_slide_04_3x4.png
|
||||
MEDIA:C:\Users\timo\Documents\greenlens\GreenLens\social_out\2026-07-08_greenlens_office-plants_pack\greenlens_office_plants_slide_05_3x4.png
|
||||
|
||||
Plattform: TikTok
|
||||
Titel: Before you buy another desk plant, check this
|
||||
Caption:
|
||||
Busy week? Choose low-drama first.
|
||||
|
||||
These three plants are easier office picks than most trendy houseplants - especially if you forget a watering day sometimes.
|
||||
|
||||
Save it for your next plant shop run.
|
||||
|
||||
Hashtags: #PlantTok #HouseplantTips #PlantCare #GreenLensPro
|
||||
Specs: A/B 1 = photo carousel 3:4; A/B 2 = 9:16 slideshow video from same carousel slides.
|
||||
MEDIA:C:\Users\timo\Documents\greenlens\GreenLens\social_out\2026-07-08_greenlens_office-plants_pack\greenlens_office_plants_slideshow_video.mp4
|
||||
|
||||
Plattform: Facebook
|
||||
Titel: 3 low-drama office plants for beginners
|
||||
Caption:
|
||||
A calmer desk starts with plants that match your real routine.
|
||||
|
||||
ZZ plant, snake plant, and peace lily are useful beginner picks - as long as you avoid the usual mistake: watering on autopilot instead of checking the soil.
|
||||
|
||||
Hashtags: #Houseplants #PlantCare #IndoorPlants #GreenLensPro
|
||||
Specs: Landscape key visual 1200x675 plus optional carousel link-back.
|
||||
MEDIA:C:\Users\timo\Documents\greenlens\GreenLens\social_out\2026-07-08_greenlens_office-plants_pack\greenlens_office_plants_facebook_key_visual.png
|
||||
|
||||
Plattform: X/Twitter
|
||||
Titel: Office plant mini-guide
|
||||
Caption:
|
||||
3 low-drama desk plants for busy weeks:
|
||||
|
||||
1) ZZ plant - tolerates lower light + missed watering
|
||||
2) Snake plant - let soil dry before watering
|
||||
3) Peace lily - steady moisture, not soggy soil
|
||||
|
||||
Best rule: match the plant to your real routine, not your ideal routine.
|
||||
|
||||
Hashtags: #Houseplants #PlantCare
|
||||
Specs: 2-image post test: Slide 1 + Slide 2. Alternative: text-only if images feel too polished.
|
||||
MEDIA:C:\Users\timo\Documents\greenlens\GreenLens\social_out\2026-07-08_greenlens_office-plants_pack\greenlens_office_plants_slide_01_3x4.png
|
||||
MEDIA:C:\Users\timo\Documents\greenlens\GreenLens\social_out\2026-07-08_greenlens_office-plants_pack\greenlens_office_plants_slide_02_3x4.png
|
||||
|
||||
Asset Map:
|
||||
- IG carousel: slides 01-05
|
||||
- TikTok carousel: slides 01-05
|
||||
- TikTok/IG Reel A/B: C:\Users\timo\Documents\greenlens\GreenLens\social_out\2026-07-08_greenlens_office-plants_pack\greenlens_office_plants_slideshow_video.mp4
|
||||
- Facebook key visual: C:\Users\timo\Documents\greenlens\GreenLens\social_out\2026-07-08_greenlens_office-plants_pack\greenlens_office_plants_facebook_key_visual.png
|
||||
- X image test: slides 01-02
|
||||
- Contact sheet: C:\Users\timo\Documents\greenlens\GreenLens\social_out\2026-07-08_greenlens_office-plants_pack\greenlens_office_plants_contact_sheet.png
|
||||
|
||||
A/B-Test-Hinweis:
|
||||
- Zuerst testen: Carousel auf Instagram/TikTok.
|
||||
- Alternative Hook: Before you buy another desk plant, check this
|
||||
- CTA-Familie: soft CTA (Check plant health + greenlenspro.com)
|
||||
|
||||
Measurement:
|
||||
- Saves: educational fit
|
||||
- Comments: which desk plant do you have?
|
||||
- Profile clicks: GreenLens intent
|
||||
- Website clicks: CTA slide / caption intent
|
||||
|
After Width: | Height: | Size: 907 KiB |
|
After Width: | Height: | Size: 630 KiB |
|
After Width: | Height: | Size: 864 KiB |
|
After Width: | Height: | Size: 914 KiB |
|
After Width: | Height: | Size: 1.3 MiB |