Ascend Co-op Platform is an open-source platform built using Ionic and Firebase, aimed at fostering collaboration and growth for worker-owned cooperatives, nonprofit organizations, and private organizations. It offers features like user profiles, group management, real-time data, and collaboration tools to address various challenges and facilitate communication between organizations.
For a deeper look at the application layout and how the frontend communicates with Firebase, see docs/architecture.md.
This project uses a continuous development process. As changes are made, they are immediately deployed to a development environment.
To execute the unit tests for both the Angular application and Firebase functions run:
npm run test
This command will build the project and run all Jasmine and Mocha tests. Ensure
@angular/cli
is installed globally and that a headless Chrome binary is
available so Karma can launch the browser.
Example installation on Ubuntu:
npm install -g @angular/cli
sudo apt-get update
sudo apt-get install -y chromium-browser
You can view the latest version of the application in the development environment at the following link:
Latest Development Environment Version
We welcome QA contributions, bug reports, and discussions. Please feel free to create issues and discussions in this GitHub repository if you find any problems or have suggestions for improvements.
Join our community and participate in discussions about the Ascend Co-op Platform. We have active communities on the following platforms:
We look forward to your contributions and engaging discussions!
-
Worker-Owned Cooperative Incubator
- Identify skill sets needed for worker-owned businesses
- Connect skilled individuals with worker-owned businesses
- Provide various services such as technical assistance and advice
-
Collaboration Platform
- User and organization profiles
- Group creation and management
- Real-time data to address issues
- Collaboration features, such as event proposals, voting, and commenting
- Landing page lead form to collect inquiries
-
Utopian Think Tank
- Collaborate with organizations and research
- Address basic human needs
- Develop community-based solutions
- Node.js and npm
- Ionic CLI
- Firebase CLI (for deployment)
- Install Node.js, npm, Ionic CLI, and Angular CLI on your development machine.
- Clone this repository:
git clone https://github.com/ASCENDynamics-NFP/AscendCoopPlatform.git
- Change to the project directory:
cd AscendCoopPlatform
- Install dependencies:
npm install
(Git hooks are installed automatically). If you don't see them, runnpm run prepare
. - Create
.env.development
(and optionally.env.production
) with your Firebase credentials. The file should define variables such asFIREBASE_API_KEY
,FIREBASE_AUTH_DOMAIN
,FIREBASE_DATABASE_URL
,FIREBASE_PROJECT_ID
,FIREBASE_STORAGE_BUCKET
,FIREBASE_MESSAGING_SENDER_ID
,FIREBASE_APP_ID
,FIREBASE_MEASUREMENT_ID
, andFIREBASE_API_URL
. TheFIREBASE_API_URL
value is required for submitting leads from the landing page form. - Run
npm run generate-env:dev
(orNODE_ENV=development node generate-env.js
) to generatesrc/environments/environment.ts
. Usenpm run generate-env:prod
for production. - Run the development server:
ionic serve
- Open your browser and navigate to
http://localhost:8100/
to view the app.
The generate-env.js
script reads values from .env.development
when generating src/environments/environment.ts
. Make sure your .env.development
file exists locally and contains your Firebase keys. These .env
files are ignored by Git so your credentials remain private. If src/environments/environment.ts
is missing, re-run npm run generate-env:dev
before starting the app.
We welcome contributions from the community. To get started, please follow these steps:
- Fork the repository.
- Create a new branch for your feature or bugfix:
git checkout -b my-feature-branch
- Make your changes and commit them with a descriptive commit message.
- Push your branch to your fork:
git push origin my-feature-branch
- Open a pull request against the main repository.
Please follow the project's coding conventions and ensure that your changes don't break any existing functionality or introduce new bugs. For more information on the contribution process, please see our CONTRIBUTING.md file.
License This project is licensed under the AGPL License. For more details, see the LICENSE file.
Support If you have any questions or need help with the project, please open an issue on the GitHub repository or reach out to the project maintainers.