Skip to content

mattdornfeld/pulp_fiction

Repository files navigation

Pulp Fiction

This is the repo for the app codenamed Pulp Fiction, a mobile based image sharing app with native NFT creation and trading functionality. This repo contains code for the mobile app itself, its companion backend service, the smart contract code itself, and any cloud based infrastructure necessary to support these things.

Project Setup

Bazel

This project uses Bazel as a build tool. The reason for this is that Bazel is a cross language build tool that enables using the same build tool to build, test, and deploy all aspects of the application, regardless of which language they are written in. Bazelisk is a command line tool for managing the Bazel installation on your machine, so you don't have to worry about which version you have installed. To install Bazelisk run

brew install bazelisk

Make

This project uses Make as a tool for defining common operations carried out when building, testing, and deploying code for the project. The reason for this is it provides a nice mechanism for ensuring all commonly used commands are available in VCS for developers to see. It also provides a mechanism for defining a common set of names for those operations (e.g. every subproject can have build and test target even though the code in those targets may differ between subprojects). Targets can be run by switching to the directory containing the relevant Makefile and running the command

make $TARGET_NAME

Protobuf

This project uses Protobuf for specifying data models for data that is transported between services and GRPC for transporting data between the services. The reason for this is these tools provide a mechanism for specifying data models and API endpoints in a language agnostic IDL and come with native functionality for building these things into the language of your choice. This autogenerated code is not checked into the repo, rather it is created as part of the build process from the files in the protos directory. The command to generate the Protobuf + GRPC code for a subproject is always stored in the proto target in that subproject's Makefile.

Build and Test From Command Line

This project has been tested with XCode 13.3, Swift 5.6, and Java 17. To build the app from the command line run

make build_all

To execute the tests run

make test_all

CircleCI

Automated continuous integrated is accomplished using CircleCI. The CircleCI project UI can be found here. CircleCI jobs are triggered on Pull Request and push to master.

Contributing

This project use Gitlab as a remote repository. This project uses GitHub Flow as a branching strategy. To make a contribution make sure your master branch is up to date, create a feature branch from master, make the necessary changes, run any formatting and linting tools for the subproject, make sure all tests pass, push to a remote feature branch and open a PR to master. Give the PR a descriptive title and in the PR message add a #Changelog and #Testing section to give a short bullet point description of the changes it contains and how it's been tested. Once it passes review you may merge your branch to master. Make sure to only "Squash Merge" PRs and delete your remote feature branch after merge as this helps to keep the commit history of master clean and the repo more easily understandable.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published