firebase-functions

Firebase Functions Patterns

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "firebase-functions" with this command: npx skills add bumgeunsong/daily-writing-friends/bumgeunsong-daily-writing-friends-firebase-functions

Firebase Functions Patterns

Directory Structure

functions/ ├── src/ │ ├── index.ts # Function exports │ ├── admin.ts # Firebase Admin SDK init │ ├── backfill/ # Data migration scripts │ ├── commentSuggestion/ # AI comment features │ ├── commentings/ # Comment activity tracking │ ├── notifications/ # Push notification functions │ ├── postings/ # Post activity tracking │ ├── replyings/ # Reply activity tracking │ └── shared/ # Shared utilities

Function Structure

import { onDocumentCreated } from 'firebase-functions/v2/firestore'; import admin from '../admin'; import { Post } from '../types/Post';

export const createPosting = onDocumentCreated( 'boards/{boardId}/posts/{postId}', async (event) => { const postData = event.data?.data() as Post; const { boardId, postId } = event.params;

if (!postData) {
  console.error('No post data found.');
  return null;
}

try {
  await admin.firestore()
    .collection('users')
    .doc(postData.authorId)
    .collection('postings')
    .add(postingData);
  console.log(`Created posting for user ${postData.authorId}`);
} catch (error) {
  console.error('Error writing posting:', error);
}

return null;

} );

Error Handling

Don't throw - let function complete gracefully:

try { await admin.firestore().collection('...').add(data); console.log(Successfully created ${resourceType}); } catch (error) { console.error(Error creating ${resourceType}:, error); // Don't throw - function should complete }

return null;

Build & Test

cd functions && npm install # Install deps cd functions && npm run build # Compile TypeScript cd functions && npm test # Run Jest tests

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

pr-stacking

No summary provided by upstream source.

Repository SourceNeeds Review
General

api-layer

No summary provided by upstream source.

Repository SourceNeeds Review
General

react-component

No summary provided by upstream source.

Repository SourceNeeds Review
General

fetching-pr-comments

No summary provided by upstream source.

Repository SourceNeeds Review