Manifold is an intuitive, collaborative platform for scholarly publishing. With iterative texts, powerful annotation tools, rich media support, and robust community dialogue, Manifold transforms scholarly publications into living digital works.
Learn more at manifoldapp.org.
See it in action at manifold.umn.edu.
Join our Slack Channel
Report a bug.
Request a feature.
The University of Minnesota Press in partnership with the GC Digital Scholarship Lab at the Graduate Center of the City University of New York has been awarded a $732,000 grant from the Andrew W. Mellon Foundation to launch Manifold Scholarship. The development of Manifold is performed by Cast Iron Coding, a digital development agency in Portland, Oregon.
Our ultimate goal is to build an open source tool that other university presses will use. To that end, we want to hear from our prospective users throughout the design and development process. To participate in the discussion, join us on our Building Manifold Development Blog. Early adopters of Manifold are encouraged to download the source code, experiment, and submit fixes and features in the form of pull requests.
Manifold uses Docker Compose to run all services locally. The API (Rails), background worker, PostgreSQL, and MinIO (S3-compatible storage) all run in containers. The client application can run in Docker as well, though most frontend developers prefer to run it locally.
From the project root:
docker compose upThis starts all services including the client. Once running:
- Client: http://localhost:13100
- API: http://localhost:13110
- GoodJob Dashboard: http://localhost:13110/api/good_job
- MinIO Console: http://localhost:13116
Once the services are running, create an admin user:
./api/bin/run bin/rake "manifold:user:create:admin[email@example.com,First,Last]"You will be prompted to enter and confirm a password.
Frontend developers often run the client outside of Docker for a faster feedback loop. To do this, start the backend services without the client container:
docker compose up -d --scale client=0To avoid passing --scale client=0 every time, create a docker-compose.override.yml file in
the project root:
services:
client:
deploy:
replicas: 0Then start the backend services normally:
docker compose up -dWith the backend running, install dependencies and start the client:
cp docker/client/client.env .env
cd client
corepack enable
yarn
yarn watchThe client will be available at http://localhost:13100.
Helper scripts are provided for running commands and opening shells inside the running containers.
Run a one-off command:
./api/bin/run bundle exec rails c
./client/bin/run yarn testOpen an interactive shell:
./api/bin/shell
./client/bin/shellThe spec container is available for running the API test suite:
docker compose exec spec bin/rspecManifold is released under the Gnu Public License, version 3. See the LICENSE.md file for details
We use SemVer for versioning. For the versions available, see the tags on this repository.
Visit our website for current documentation. Be sure to check out the installation instructions.
Read about Manifold in the News
- The University of Minnesota Press partners with CUNY’s GC Digital Scholarship Lab to launch MANIFOLD SCHOLARSHIP
- Univ of Minnesota Press Gets Interactive with Scholarly Books, Publishers Weekly
- GC Digital Scholarship Lab Awarded Shared Grant to Launch Manifold Scholarship
- U. Minnesota Press, CUNY Grad Center Develop Hybrid Publishing Platform, Library Journal
- Manifold Uses, Inside Higher Ed
