{"id":17450347,"url":"https://github.com/sean-perkins/eventforce","last_synced_at":"2026-04-29T23:04:49.024Z","repository":{"id":121122840,"uuid":"93207086","full_name":"sean-perkins/eventforce","owner":"sean-perkins","description":"Salesforce Event Management app built with NodeJS and Angular (4+); deployed on Heroku.","archived":false,"fork":false,"pushed_at":"2017-06-09T05:21:05.000Z","size":922,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-31T19:55:26.517Z","etag":null,"topics":["angular","angular-cli","heroku","nodejs","salesforce","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sean-perkins.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-06-02T22:03:11.000Z","updated_at":"2018-01-09T11:58:05.000Z","dependencies_parsed_at":"2024-02-10T02:30:13.746Z","dependency_job_id":null,"html_url":"https://github.com/sean-perkins/eventforce","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sean-perkins%2Feventforce","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sean-perkins%2Feventforce/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sean-perkins%2Feventforce/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sean-perkins%2Feventforce/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sean-perkins","download_url":"https://codeload.github.com/sean-perkins/eventforce/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240183767,"owners_count":19761440,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","angular-cli","heroku","nodejs","salesforce","typescript"],"created_at":"2024-10-17T22:12:28.145Z","updated_at":"2026-04-29T23:04:48.967Z","avatar_url":"https://github.com/sean-perkins.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![EventForce](http://i.imgur.com/yPT45Wp.png)\n\nA Salesforce integration built on-top of NodeJS and Angular (4+). The integration allows Salesforce administrators to create events, sessions and attendees through their Salesforce instance. Users (non-salesforce) can view available events and event details through the Angular app. They may register to an event, which will tie back into the Salesforce environment.\n\n\u003ca href=\"https://pure-inlet-93468.herokuapp.com\"\u003e\n    \u003cimg src=\"http://www.codecheese.com/wp-content/uploads/heroku-logo.png\"\u003e\n\u003c/a\u003e\n\n### Technologies\n- Angular (4+)\n- NodeJS\n- Protractor/Jasmine (Testing)\n- TypeScript\n- RxJS (@ngrx in Angular)\n- JSForce (connect NodeJS to SalesForce API)\n\n## Getting Started\n1. Run `npm run setup` from the root directory.\n2. Run `npm start.server` to initialize the server locally at `http://localhost:3000`.\n3. Build the front-end with `npm run build.client`.\n4. _Optional:_ If developing you can use the proxy with `npm run start.client` and opening up `http://localhost:4200`.\n\n## Example Images\n![Event Listings](https://media.giphy.com/media/l0IxZHbDLN0gdjnZC/giphy.gif)\n\n### SalesForce Schema\n**Event**\n\nThe representation of events that users can register to.\n\n|Field Label|API Name|Data Type|Description|\n|--|--|--|--|\n|Event Name|`Name`|Text(80)|The Event's displayed name.|\n|Description|`Description__c`|Rich Text Area(32768)|The description of the event.|\n|Start|`Start__c`|Date/Time|The Event's start time.|\n|End|`End__c`|Date/Time|The Event's end time.|\n|Status|`Status__c`|Picklist|The Event's availability status.|\n|Registration Limit|`Registration_Limit__c`|Number(18, 0)|The maximum number of allowed attendees.|\n|Remaining Seats|`Remaining_Seats__c`|Formula (Number))|The number of available open seats for registration. [Click for formula.](https://github.com/sean-perkins/eventforce/wiki/Remaining-Seats-Formula-(SalesForce))|\n|Reserved Seats|`Reserved_Seats__c`|Roll-Up Summary (COUNT EventAttendee)|The number of EventAttendee joins to this event.|\n\n---\n\n**Session**\n\nThe representation of sessions under an event that users can register to.\n\n|Field Label|API Name|Data Type|Description|\n|--|--|--|--|\n|Session Name|`Name`|Text(80)|The Session's displayed name.|\n|Start|`Start__c`|Date/Time|The Sessions's start time.|\n|End|`End__c`|Date/Time|The Sessions's end time.|\n|Status|`Status__c`|Picklist|The Sessions's availability status.|\n|Registration Limit|`Registration_Limit__c`|Number(18, 0)|The maximum number of allowed attendees.|\n|Reserved Seats|`Reserved_Seats__c`|Roll-Up Summary (COUNT SessionAttendee)|The number of SessionAttendee joins to this event.|\n|Remaining Seats|`Remaining_Seats__c`|Formula (Number))|The number of available open seats for registration. [Click for formula.](https://github.com/sean-perkins/eventforce/wiki/Remaining-Seats-Formula-(SalesForce))\n|Event|`Event__c`|Master-Detail(Event)|The relationship join to the parent Event.|\n\n---\n\n**Attendee**\n\nThe representation of a user attending a session and/or event.\n\n|Field Label|API Name|Data Type|Description|\n|--|--|--|--|\n|First Name|`First_Name__c`|Text(180)|The attendee's first name.|\n|Last Name|`Last_Name__c`|Text(255)|The attendee's last name.|\n|Company|`Company__c`|Text(255)|_Optional:_ The attendee's company name.\n|Phone|`Phone__c`|Phone|_Optional:_ The attendees contact number.|\n|Email|`Email__c`|Email|The attendees email address.|\n|Event|`Event__c`|Master-Detail(Event)|The relationship join to the attending events.|\n\n---\n\n**SessionAttendee**\n\nThe representation of the association between attendees and sessions (one-to-many).\n\n|Field Label|API Name|Data Type|Description|\n|--|--|--|--|\n|Attendee|`Attendee__c`|Master-Detail(Attendee)|The relationship join to the attendee.|\n|Session|`Session__c`|Master-Detail(Session)|The relationship join to the session.|\n\n---\n\n**EventAttendee**\n\nThe representation of the association between attendees and events (one-to-many).\n\n|Field Label|API Name|Data Type|Description|\n|--|--|--|--|\n|Attendee|`Attendee__c`|Master-Detail(Attendee)|The relationship join to the attendee.|\n|Event|`Event__c`|Master-Detail(Session)|The relationship join to the event.|\n\n### Testing\n\n**Front-end**\n\n1. Navigate to the client directory `cd app/client`.\n2. Run the Angular-CLI testing suite: `ng test`.\n\n\n# Contributors\n\n[\u003cimg alt=\"Sean perkins\" src=\"https://avatars1.githubusercontent.com/u/13732623?v=3\u0026s=117\" width=\"117\"\u003e](https://github.com/sean-perkins) |\n:---:\n|[Sean Perkins](https://github.com/sean-perkins)|\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsean-perkins%2Feventforce","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsean-perkins%2Feventforce","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsean-perkins%2Feventforce/lists"}