Facebook Ads Management Control Panel (MCP)
A comprehensive Node.js Express server that integrates with the Facebook Marketing API to provide a robust platform for managing Facebook ad campaigns, analyzing performance, and receiving optimization recommendations.
Features
- Facebook OAuth Authentication: Secure login with Facebook credentials
- Ad Account Management: View and manage multiple Facebook ad accounts
- Campaign Management: Create, read, update, and delete campaigns
- Ad Set Management: Create, read, update, and delete ad sets with targeting options
- Ad Management: Create, read, update, and delete ads with creative options
- Analytics: Comprehensive analytics for campaigns, ad sets, and ads
- Recommendations: Intelligent recommendations for budget optimization, targeting, and creative performance
- API Documentation: Detailed API documentation for all endpoints
- Railway Deployment: Easy deployment to Railway with minimal configuration
Tech Stack
- Backend: Node.js, Express
- Database: MongoDB with Mongoose ODM
- Authentication: Passport.js with Facebook OAuth, JWT
- API Integration: Facebook Marketing API
- Validation: Joi
- Logging: Winston
- Security: Helmet, CORS, Rate Limiting, CSRF Protection
- Deployment: Railway
Project Structure
Prerequisites
- Node.js (v14 or higher)
- MongoDB database (local or Atlas)
- Facebook Developer Account with an app that has Marketing API permissions
Getting Started
Installation
- Clone the repository:Copy
- Install dependencies:Copy
- Create a
.env
file based on.env.example
:Copy - Update the
.env
file with your configuration:- MongoDB connection string
- Facebook App ID and Secret
- JWT secret key
- Other configuration options
Running Locally
Start the development server:
The server will be available at http://localhost:3000
.
API Endpoints
Authentication
GET /auth/facebook
: Initiate Facebook OAuth flowGET /auth/facebook/callback
: Handle Facebook OAuth callbackPOST /auth/refresh
: Refresh JWT tokenPOST /auth/logout
: Logout userGET /auth/me
: Get current userPUT /auth/me
: Update current user
Ad Accounts
GET /api/ad-accounts
: Get all ad accountsGET /api/ad-accounts/sync
: Sync ad accounts from FacebookGET /api/ad-accounts/:id
: Get ad account by IDGET /api/ad-accounts/:id/insights
: Get insights for an ad accountGET /api/ad-accounts/:id/campaigns
: Get campaigns for an ad account
Campaigns
GET /api/campaigns
: Get all campaignsGET /api/campaigns/sync
: Sync campaigns from FacebookPOST /api/campaigns
: Create a new campaignGET /api/campaigns/:id
: Get campaign by IDPUT /api/campaigns/:id
: Update campaignDELETE /api/campaigns/:id
: Delete campaignGET /api/campaigns/:id/insights
: Get insights for a campaignGET /api/campaigns/:id/adsets
: Get ad sets for a campaignGET /api/campaigns/:id/analytics
: Get analytics for a campaignPOST /api/campaigns/:id/fetch-analytics
: Fetch and store analytics for a campaign
Ad Sets
GET /api/ad-sets
: Get all ad setsGET /api/ad-sets/sync
: Sync ad sets from FacebookPOST /api/ad-sets
: Create a new ad setGET /api/ad-sets/:id
: Get ad set by IDPUT /api/ad-sets/:id
: Update ad setDELETE /api/ad-sets/:id
: Delete ad setGET /api/ad-sets/:id/insights
: Get insights for an ad setGET /api/ad-sets/:id/ads
: Get ads for an ad setGET /api/ad-sets/:id/analytics
: Get analytics for an ad setPOST /api/ad-sets/:id/fetch-analytics
: Fetch and store analytics for an ad setGET /api/ad-sets/:id/targeting-recommendations
: Get targeting recommendations for an ad set
Ads
GET /api/ads
: Get all adsGET /api/ads/sync
: Sync ads from FacebookPOST /api/ads
: Create a new adGET /api/ads/:id
: Get ad by IDPUT /api/ads/:id
: Update adDELETE /api/ads/:id
: Delete adGET /api/ads/:id/insights
: Get insights for an adGET /api/ads/:id/analytics
: Get analytics for an adPOST /api/ads/:id/fetch-analytics
: Fetch and store analytics for an adGET /api/ads/:id/creative-recommendations
: Get creative recommendations for an adGET /api/ads/:id/preview
: Get preview URL for an ad
Analytics
GET /api/analytics/overview
: Get account overview analyticsGET /api/analytics/campaigns
: Get analytics for all campaignsGET /api/analytics/campaigns/:id
: Get analytics for a specific campaignGET /api/analytics/ad-sets
: Get analytics for all ad setsGET /api/analytics/ad-sets/:id
: Get analytics for a specific ad setGET /api/analytics/ads
: Get analytics for all adsGET /api/analytics/ads/:id
: Get analytics for a specific adPOST /api/analytics/fetch
: Fetch and store analytics for all entitiesGET /api/analytics/comparison
: Get performance comparison between two time periodsGET /api/analytics/metrics
: Get available metrics for analytics
Recommendations
GET /api/recommendations/budget
: Get budget optimization recommendationsGET /api/recommendations/targeting
: Get targeting recommendations for an ad setGET /api/recommendations/creative
: Get creative performance recommendationsGET /api/recommendations/all
: Get all recommendations for an ad accountGET /api/recommendations/summary
: Get recommendations summary for an ad accountGET /api/recommendations/best-practices
: Get best practices recommendations
Health Check
GET /health
: Health check endpointGET /health/db
: Database health check endpointGET /health/deep
: Deep health check endpoint
Deployment to Railway
This project is configured for easy deployment to Railway.
- Create a new project on Railway
- Connect your GitHub repository
- Add the required environment variables in the Railway dashboard
- Deploy the project
The railway.json
file in the repository configures the deployment settings, including the health check endpoint and restart policy.
Security Considerations
This project implements several security measures:
- Authentication: JWT-based authentication with secure cookies
- Rate Limiting: Prevents brute force attacks
- CSRF Protection: Prevents cross-site request forgery
- Helmet: Sets various HTTP headers for security
- Input Validation: Validates all input data using Joi
- MongoDB Sanitization: Prevents NoSQL injection
- XSS Protection: Prevents cross-site scripting attacks
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
This server cannot be installed
A Node.js Express server that integrates with Facebook Marketing API to provide a platform for managing ad campaigns, analyzing performance, and receiving optimization recommendations.