mix.exs
defmodule CodeCorps.Mixfile do
@moduledoc false
alias CodeCorps.{
Analytics, GitHub, Policy, StripeService, StripeTesting
}
use Mix.Project
def project do
[app: :code_corps,
version: "0.0.1",
elixir: "~> 1.6",
elixirc_paths: elixirc_paths(Mix.env),
compilers: [:phoenix, :gettext] ++ Mix.compilers,
dialyzer: [ignore_warnings: "dialyzer.ignore-warnings", plt_add_apps: [:kernel, :stdlib], plt_add_deps: :transitive],
build_embedded: Mix.env == :prod,
start_permanent: Mix.env == :prod,
aliases: aliases(),
deps: deps(),
docs: docs(),
test_coverage: [tool: ExCoveralls]]
end
# Configuration for the OTP application.
#
# Type `mix help compile.app` for more information.
def application do
[
mod: {CodeCorps, []},
extra_applications: [:sentry, :logger, :scout_apm, :timex, :tzdata]
]
end
# Specifies which paths to compile per environment.
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
# Specifies your project dependencies.
#
# Type `mix help deps` for examples and options.
defp deps do
[
{:bamboo, "~> 0.7"}, # emails
{:bamboo_postmark, "~> 0.4.1"}, # postmark adapter for emails
{:dialyxir, "~> 0.5", only: [:dev, :test], runtime: false},
{:phoenix, "~> 1.3"},
{:phoenix_pubsub, "~> 1.0.2"},
{:phoenix_ecto, "~> 3.3.0"},
{:postgrex, ">= 0.0.0"},
{:phoenix_html, "~> 2.10.3"},
{:phoenix_live_reload, "~> 1.1", only: :dev},
{:gettext, "~> 0.13"},
{:cowboy, "~> 1.0"},
{:bcrypt_elixir, "~> 1.0"},
{:benchfella, "~> 0.3.0", only: :dev},
{:bypass, "~> 0.8.1", only: :test},
{:cloudex, "~> 1.0"},
{:comeonin, "~> 4.0"},
{:corsica, "~> 1.0"}, # CORS
{:credo, "~> 0.8", only: [:dev, :test]}, # Code style suggestions
{:earmark, "~> 1.2"}, # Markdown rendering
{:ecto_ordered, "0.2.0-beta1"},
{:ex_aws, "~> 1.1"}, # Amazon AWS
{:excoveralls, "~> 0.7", only: :test}, # Test coverage
{:ex_doc, "~> 0.17", only: [:dev, :test]},
{:ex_machina, "~> 2.0", only: :test}, # test factories
{:guardian, "~> 1.0"}, # Authentication (JWT)
{:hackney, ">= 1.4.4"},
{:httpoison, "~> 0.13"},
{:inch_ex, "~> 0.5", only: [:dev, :test]}, # Inch CI
{:inflex, "~> 1.9"},
{:ja_serializer, "~> 0.12"}, # JSON API
{:joken, "~> 1.5"}, # JWT encoding
{:mix_test_watch, "~> 0.5", only: :dev, runtime: false},
{:money, "~> 1.2.1"},
{:poison, "~> 3.0", override: true},
{:scout_apm, "~> 0.0"},
{:scrivener_ecto, "~> 1.2"}, # DB query pagination
{:segment, "~> 0.1"}, # Segment analytics
{:sentry, "~> 6.0"}, # Sentry error tracking
{:stripity_stripe, git: "https://github.com/code-corps/stripity_stripe.git", branch: "2.0-beta"}, # Stripe
{:sweet_xml, "~> 0.5"},
{:timber, "~> 2.0"}, # Logging
{:timex, "~> 3.0"},
{:timex_ecto, "~> 3.0"}
]
end
defp docs do
[
main: "README",
source_url: "https://github.com/code-corps/code-corps-api",
groups_for_modules: groups_for_modules(),
extras: [
"README.md": [title: "README"],
"LICENSE.md": [title: "LICENSE"]
],
]
end
defp groups_for_modules do
[
"Models": [
CodeCorps.Accounts,
CodeCorps.Accounts.Changesets,
CodeCorps.AuthToken,
CodeCorps.Category,
CodeCorps.Comment,
CodeCorps.DonationGoal,
CodeCorps.GithubAppInstallation,
CodeCorps.GithubComment,
CodeCorps.GithubEvent,
CodeCorps.GithubIssue,
CodeCorps.GithubPullRequest,
CodeCorps.GithubRepo,
CodeCorps.MapUtils,
CodeCorps.Model,
CodeCorps.Organization,
CodeCorps.OrganizationGithubAppInstallation,
CodeCorps.OrganizationInvite,
CodeCorps.Preview,
CodeCorps.Project,
CodeCorps.Project.Query,
CodeCorps.ProjectCategory,
CodeCorps.ProjectSkill,
CodeCorps.ProjectUser,
CodeCorps.Repo,
CodeCorps.Role,
CodeCorps.RoleSkill,
CodeCorps.Skill,
CodeCorps.SluggedRoute,
CodeCorps.StripeConnectAccount,
CodeCorps.StripeConnectCard,
CodeCorps.StripeConnectCharge,
CodeCorps.StripeConnectCustomer,
CodeCorps.StripeConnectPlan,
CodeCorps.StripeConnectSubscription,
CodeCorps.StripeEvent,
CodeCorps.StripeExternalAccount,
CodeCorps.StripeFileUpload,
CodeCorps.StripeInvoice,
CodeCorps.StripePlatformCard,
CodeCorps.StripePlatformCustomer,
CodeCorps.TaskList,
CodeCorps.TaskSkill,
CodeCorps.Tasks,
CodeCorps.Tasks.Query,
CodeCorps.Transition.UserState,
CodeCorps.User,
CodeCorps.UserCategory,
CodeCorps.UserRole,
CodeCorps.UserSkill,
CodeCorps.UserTask,
CodeCorps.Validators.SlugValidator,
CodeCorps.Validators.TimeValidator
],
"Services": [
CodeCorps.Comment.Service,
CodeCorps.Services.DonationGoalsService,
CodeCorps.Services.ForgotPasswordService,
CodeCorps.Services.MarkdownRendererService,
CodeCorps.Services.ProjectService,
CodeCorps.Services.UserService,
CodeCorps.Tasks
],
"Policies": [
Policy,
Policy.Category,
Policy.Comment,
Policy.DonationGoal,
Policy.GithubAppInstallation,
Policy.Helpers,
Policy.Organization,
Policy.OrganizationGithubAppInstallation,
Policy.OrganizationInvite,
Policy.Preview,
Policy.Project,
Policy.ProjectCategory,
Policy.ProjectSkill,
Policy.ProjectUser,
Policy.Role,
Policy.RoleSkill,
Policy.Skill,
Policy.StripeConnectAccount,
Policy.StripeConnectPlan,
Policy.StripeConnectSubscription,
Policy.StripePlatformCard,
Policy.StripePlatformCustomer,
Policy.Task,
Policy.TaskSkill,
Policy.User,
Policy.UserCategory,
Policy.UserRole,
Policy.UserSkill,
Policy.UserTask
],
"Helpers": [
CodeCorps.Helpers.Query,
CodeCorps.Helpers.RandomIconColor,
CodeCorps.Helpers.Slug,
CodeCorps.Helpers.String,
CodeCorps.Helpers.URL,
CodeCorps.RandomIconColor.Generator,
CodeCorps.RandomIconColor.TestGenerator
],
"Emails": [
CodeCorps.Mailer,
CodeCorps.Emails.BaseEmail,
CodeCorps.Emails.ForgotPasswordEmail,
CodeCorps.Emails.OrganizationInviteEmail,
CodeCorps.Emails.ProjectUserAcceptanceEmail,
CodeCorps.Emails.ReceiptEmail
],
"Web": [
CodeCorpsWeb,
CodeCorpsWeb.Endpoint,
CodeCorpsWeb.ErrorHelpers,
CodeCorpsWeb.Gettext,
CodeCorpsWeb.Router,
CodeCorpsWeb.Router.Helpers,
CodeCorpsWeb.UserSocket
],
"Web – Plugs": [
CodeCorpsWeb.Plug.AnalyticsIdentify,
CodeCorpsWeb.Plug.CurrentUser,
CodeCorpsWeb.Plug.DataToAttributes,
CodeCorpsWeb.Plug.IdsToIntegers,
CodeCorpsWeb.Plug.Segment,
CodeCorpsWeb.Plug.SetSentryUserContext,
CodeCorpsWeb.Plug.SetTimberUserContext
],
"Miscellaneous": [
CodeCorps.Adapter.MapTransformer,
CodeCorps.ConnUtils,
CodeCorps.Presenters.ImagePresenter,
CodeCorps.WebClient
],
"GitHub – API": [
GitHub,
GitHub.HTTPClientError,
GitHub.Utils.ResultAggregator,
GitHub.API,
GitHub.API.Comment,
GitHub.API.Headers,
GitHub.API.Installation,
GitHub.API.Issue,
GitHub.API.JWT,
GitHub.API.PullRequest,
GitHub.API.User,
GitHub.APIError,
GitHub.APIErrorObject
],
"GitHub – Sync": [
GitHub.Sync,
GitHub.Sync.Comment,
GitHub.Sync.Comment.Comment,
GitHub.Sync.Comment.Comment.Changeset,
GitHub.Sync.Comment.GithubComment,
GitHub.Sync.Installation.Changeset,
GitHub.Sync.Issue,
GitHub.Sync.Issue.GithubIssue,
GitHub.Sync.Issue.Task,
GitHub.Sync.Issue.Task.Changeset,
GitHub.Sync.PullRequest,
GitHub.Sync.PullRequest.BodyParser,
GitHub.Sync.PullRequest.GithubPullRequest,
GitHub.Sync.User.RecordLinker,
GitHub.Sync.Utils.RepoFinder
],
"Github – Webhooks": [
GitHub.Webhook.EventSupport,
GitHub.Webhook.Handler,
GitHub.Webhook.Processor,
GitHub.Event,
GitHub.Event.Handler,
GitHub.Event.Installation,
GitHub.Event.Installation.MatchedUser,
GitHub.Event.Installation.Repos,
GitHub.Event.Installation.UnmatchedUser,
GitHub.Event.Installation.Validator,
GitHub.Event.InstallationRepositories,
GitHub.Event.InstallationRepositories.Validator,
GitHub.Event.IssueComment,
GitHub.Event.IssueComment.CommentDeleter,
GitHub.Event.IssueComment.Validator,
GitHub.Event.Issues,
GitHub.Event.Issues.Validator,
GitHub.Event.PullRequest,
GitHub.Event.PullRequest.Validator
],
"GitHub – Adapters": [
GitHub.Adapters.AppInstallation,
GitHub.Adapters.Comment,
GitHub.Adapters.Issue,
GitHub.Adapters.PullRequest,
GitHub.Adapters.Repo,
GitHub.Adapters.User,
GitHub.Adapters.Utils.BodyDecorator
],
"Stripe – Services": [
StripeService.StripeConnectAccountService,
StripeService.StripeConnectCardService,
StripeService.StripeConnectChargeService,
StripeService.StripeConnectCustomerService,
StripeService.StripeConnectExternalAccountService,
StripeService.StripeConnectPlanService,
StripeService.StripeConnectSubscriptionService,
StripeService.StripeInvoiceService,
StripeService.StripePlatformCardService,
StripeService.StripePlatformCustomerService
],
"Stripe – Webhooks": [
StripeService.WebhookProcessing.ConnectEventHandler,
StripeService.WebhookProcessing.EnvironmentFilter,
StripeService.WebhookProcessing.EventHandler,
StripeService.WebhookProcessing.IgnoredEventHandler,
StripeService.WebhookProcessing.PlatformEventHandler,
StripeService.WebhookProcessing.WebhookProcessor,
StripeService.Events.AccountUpdated,
StripeService.Events.ConnectChargeSucceeded,
StripeService.Events.ConnectExternalAccountCreated,
StripeService.Events.CustomerSourceUpdated,
StripeService.Events.CustomerSubscriptionDeleted,
StripeService.Events.CustomerSubscriptionUpdated,
StripeService.Events.CustomerUpdated,
StripeService.Events.InvoicePaymentSucceeded
],
"Stripe – Adapters": [
StripeService.Adapters.StripeConnectAccountAdapter,
StripeService.Adapters.StripeConnectCardAdapter,
StripeService.Adapters.StripeConnectChargeAdapter,
StripeService.Adapters.StripeConnectCustomerAdapter,
StripeService.Adapters.StripeConnectPlanAdapter,
StripeService.Adapters.StripeConnectSubscriptionAdapter,
StripeService.Adapters.StripeEventAdapter,
StripeService.Adapters.StripeExternalAccountAdapter,
StripeService.Adapters.StripeFileUploadAdapter,
StripeService.Adapters.StripeInvoiceAdapter,
StripeService.Adapters.StripePlatformCardAdapter,
StripeService.Adapters.StripePlatformCustomerAdapter,
],
"Stripe – Validators": [
StripeService.Validators.ProjectCanEnableDonations,
StripeService.Validators.ProjectSubscribable,
StripeService.Validators.UserCanSubscribe,
],
"Stripe – Testing": [
StripeTesting.Account,
StripeTesting.Card,
StripeTesting.Charge,
StripeTesting.Customer,
StripeTesting.Event,
StripeTesting.ExternalAccount,
StripeTesting.Helpers,
StripeTesting.Invoice,
StripeTesting.Plan,
StripeTesting.Subscription,
StripeTesting.Token
],
"Analytics": [
Analytics.InMemoryAPI,
Analytics.SegmentAPI,
Analytics.SegmentDataExtractor,
Analytics.SegmentEventNameBuilder,
Analytics.SegmentPlugTracker,
Analytics.SegmentTracker,
Analytics.SegmentTrackingSupport,
Analytics.SegmentTraitsBuilder,
Analytics.TestAPI
],
"Cloudinary": [
CodeCorps.Cloudex.CloudinaryUrl,
CodeCorps.Cloudex.Uploader,
CloudexTest,
CloudexTest.Url
]
]
end
# Aliases are shortcuts or tasks specific to the current project.
# For example, to create, migrate and run the seeds file at once:
#
# $ mix ecto.setup
#
# See the documentation for `Mix` for more info on aliases.
defp aliases do
["ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"],
"ecto.reset": ["ecto.drop", "ecto.setup"],
"ecto.migrate": ["ecto.migrate", "ecto.dump"],
"ecto.rollback": ["ecto.rollback", "ecto.dump"],
"test": ["ecto.create --quiet", "ecto.migrate", "test"],
"test.acceptance": ["ecto.create --quiet", "ecto.migrate", "test --include acceptance:true"]]
end
end