Git Product home page Git Product logo

campy's Introduction

CAMPY

CAMPY offers a comprehensive Campaign Management Software solution, designed to streamline and optimize your campaign operations. Whether you're managing political campaigns, marketing initiatives, or community outreach programs, our software equips you with the tools you need for success. Key features include advanced contact management, volunteer coordination, personalized newsletter distribution, and sophisticated polling tools.

With CAMPY, you can effectively organize your contacts, mobilize volunteers, engage your audience through targeted newsletters, and gain valuable insights from polls. Our intuitive interface and robust functionality make it easier than ever to coordinate your campaigns, ensuring maximum impact and efficiency. Elevate your campaign strategy with CAMPY, the ultimate tool for modern campaign management.

CAMPY is composed of several key components:

Introducing CAMPY: The Ultimate Campaign Management Solution

Unlock the potential of your campaigns with CAMPY, the leading Software as a Service (SaaS) platform designed to revolutionize how you manage contacts, volunteers, newsletters, and polls. Our comprehensive suite, comprising both an API and a Client API alongside a user-friendly Desktop Administration interface, offers unparalleled flexibility and control, catering to all your campaign management needs.

Key Features

Integrated APIs: Seamlessly manage your campaign's contacts, volunteers, newsletters, and polls with our robust API and Client API. These tools are designed to integrate effortlessly into your existing systems, providing a streamlined experience that saves time and enhances efficiency.

Desktop Administration: Gain complete oversight of your campaign operations with our Desktop Administration tool. Its intuitive design ensures that managing your campaign's moving parts is simpler and more effective than ever before.

Unmatched Data Security

At CAMPY, we understand the paramount importance of data security. Our end-to-end encryption protocol ensures that your campaign's data is protected at every stage:

Encryption at the Source: We use ECIES Public/Private Keys to encrypt form data on the client side, safeguarding information from the moment it's captured.

Secure Data Transmission: Data is decrypted on our API server using ECIES Public/Private Keys, ensuring that it remains protected during transit.

Campaign-Specific Encryption: Once on our API server, data is re-encrypted using the Campaign Public Keys. This means that only the campaign owner has access to their data, ensuring absolute confidentiality and security.

With CAMPY, you can be confident that all your data is encrypted and stored with the highest security standards, giving you the freedom to focus on what truly matters—running successful campaigns.

Why Choose CAMPY?

Choosing CAMPY means opting for a secure, efficient, and comprehensive campaign management solution. Whether you're looking to mobilize volunteers, engage with your contacts through personalized newsletters, or gather insights through polls, CAMPY provides all the tools and security you need to succeed.

Elevate your campaign management with CAMPY—where powerful features meet uncompromising security.

Setup

CAMPY is using node v20.11.1 (npm v10.2.4). Install Node using Node Version Manager.

Once nvm is installed you can select 'lts/iron'

nvm use lts/iron

CAMP-DB

Initialize a new MySQL database name 'camp_db', then generate the tables using the SQL file located in the data directory.

Install

npm install

Build

npm run build

Watch

npm run watch

Start

npm run start

campy's People

Contributors

astor avatar

Stargazers

 avatar

Watchers

 avatar

campy's Issues

Backend - CORS

Implement passing in the CORS URI values to the server using environment variables for now to prevent having to use CORS '*'

Client - CAMPY API

CAMPY Client Side API

Implement the a TypeScript library which provides the encryption/decryption tools needed to protect CAMPY user data.

  • Contact
  • Volunteer
  • Newsletter
  • Polls

CAMPY will need to also implement out-of-the-box forms with a CAMPY UI Library, which loads the CAMPY API keys to operate the components.

Backend E2E Encryption

Implement end-to-end encryption for all data and communications using 'eciesjs' library.

Protocol for End-to-End

  1. Campaign owners generate a set of keys and will be stored in a secure Secrets vault.
  2. Generated keys will then be associated by Campaign.
  3. When a Campaign has data to save to the database, the Campaign will encrypt and decrypt the data using the stored keys.
  4. Campaign website has the PublicKey of the campaign, and only the Campaign may decrypt any data related to said Campaign.
  5. Campaign owners may view the encrypted data by using their keys to decrypt the data, using the Campaign Administration UI.

Documentation - SendGrid

Include SendGrid API Key integration documentation in the README.md, as it is used for all email communications.

Backend - User Identification and Anonymity

Generate a unique identifier (such as a UUID) for each user upon registration.

This identifier will be used to associate user data with the respective user while maintaining anonymity.

Avoid storing personally identifiable information (PII) such as names, email addresses, or other sensitive information in plaintext. Instead, encrypt and store only the necessary data.

Backend Multi-Campaign Model

Implement a top level Campaign Model for the CAMPY API.

Protocol for Managing a Campaign

  1. Account creator is the owner of the top-level account.
  2. Account owner may create many Campaigns.
  3. Each Campaign maintains it's own contacts, volunteers, newsletters and encryption keys individually.
  4. A Campaign may have the following states (Active, InActive, Archived)

Requires an update to the database to create the Campaign table and update the rest of the tables with the campaign_id relationship.

Backend - Logging

Implement the use of a proper logging framework to replace all console messages.

Frameworks:

  • Winston
  • Pino
  • Bunyan
  • Log4js

Backend - Message Templates

Implement generic message templates for Contact, Volunteer and Newsletter functions.

  1. Encrypting with the Campaign Keys and storing the templates in database or other storage
  2. Decryption to execute the Contact, Volunteer and Newsletter functions.

Backend Confirmations and Opt-Out

Implement confirmation emails for each aspect:

  • Contact : Should return an email, confirming subscription,assuring contact will be made by a team member and a thank you.
  • Volunteer : Should return an email, confirming subscription,assuring contact will be made by a team member and a thank you.
  • Newsletter : Should return an email, confirming subscription.

Implement the Opt-Out to allows users who are part of the Campaign to Opt-Out of receiving emails.

Backend - Instrumentation

Implement instrumentation using Prometheus for the following performance metrics :

  • CPU Usage: Monitor CPU usage to understand how much CPU resources your server is consuming. You can track metrics such as CPU utilization percentage, system, and user CPU time.

  • Memory Usage: Measure memory usage to monitor how much memory your server is using. You can track metrics such as total memory, used memory, free memory, and memory utilization percentage.

  • Garbage Collection: Monitor garbage collection (GC) activity to understand how efficiently your server's memory is managed. Track metrics such as GC pause duration, frequency of GC cycles, and memory reclaimed by GC.

  • File System Usage: Monitor file system usage to ensure that your server has enough disk space and to detect any potential issues with disk space constraints. Track metrics such as disk space usage, available disk space, and disk utilization percentage.

  • Network Activity: Measure network activity to understand how much network bandwidth your server is consuming and to detect any network-related issues. Track metrics such as network input/output (I/O) rates, number of network connections, and network latency.

  • Database Queries: Monitor database performance by tracking metrics related to database queries. Measure metrics such as query execution time, number of queries per second, and database connection pool usage.

  • Error Rates: Monitor error rates to identify any issues or anomalies in your server's operation. Track metrics such as the number of HTTP errors, database query errors, and application-specific errors.

  • Concurrency: Measure concurrency levels to understand how many concurrent requests or tasks your server is handling. Track metrics such as the number of active connections, concurrent HTTP requests, and worker thread usage.

  • Response Time Percentiles: Measure response time percentiles to understand the distribution of response times for different requests. Track metrics such as the 95th percentile response time, 99th percentile response time, and maximum response time.

Desktop - CAMPY Command Center

Desktop - CAMPY Command Center
Develop a desktop application for the Campaign Owner to access and manage encrypted user data.

Desktop Features:

Security

  1. Secure Communication Protocols: Use HTTPS for communication between the desktop application and the server. This ensures that data transmitted over the network is encrypted and protected from eavesdropping or tampering.
  2. Client-side Decryption: Implement client-side decryption within the desktop application. When the Campaign Owner authenticates, the application should download encrypted data associated with the Campaign from the server and decrypt it locally using the Campaign Owner's private key. This ensures that sensitive user data remains encrypted during transmission and storage on the server, and is only decrypted locally by authorized users.

Access Control

  1. Allow the Campaign Owner to manage access control settings within the application. This includes defining roles and permissions for other users who may need access to the system.
  2. Provide an interface for the Campaign Owner to add, modify, or remove user accounts and assign appropriate access rights based on roles (e.g., administrator, moderator, viewer).

API Keys

  1. Provide functionality for managing API keys used for authentication and authorization with external services or APIs.
  2. Allow the Campaign Owner to generate new API keys, revoke existing keys, and configure permissions associated with each key.

Contacts

  1. Enable the Campaign Owner to manage a list of contacts, which may include supporters, donors, or other stakeholders associated with the Campaign.
  2. Implement features for adding, editing, and deleting contact information such as names, email addresses, phone numbers, and other relevant details.

Volunteer

  1. Facilitate volunteer management by allowing the Campaign Owner to organize and coordinate volunteer activities.
  2. Provide tools for recruiting volunteers, assigning tasks, tracking volunteer hours, and communicating with volunteers.

Newsletters

  1. Enable the Campaign Owner to create and send newsletters to supporters and stakeholders.
  2. Implement features for composing newsletter content, managing subscriber lists, scheduling newsletter distribution, and tracking engagement metrics such as open rates and click-through rates.

Polls

  1. Allow the Campaign Owner to create and conduct polls or surveys to gather feedback from supporters and constituents.
  2. Provide options for designing poll questions, setting response formats, distributing polls to targeted audiences, and analyzing survey results.

Social Media

  1. Integrate with social media platforms to enable the Campaign Owner to manage social media accounts and publish content.
  2. Provide features for composing and scheduling social media posts, monitoring engagement metrics, and responding to comments or messages.

Backend - Calendar

Implement a Calendar system which entails updates to the backend and the database.

Calendar will be used for scheduling various automation tasks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.