Skip to content

Commit

Permalink
Merge branch 'main' into fix-api-unit-tests
Browse files Browse the repository at this point in the history
  • Loading branch information
naftalimurgor authored Dec 7, 2023
2 parents 5de6be9 + a03e57d commit 9807bd8
Show file tree
Hide file tree
Showing 56 changed files with 894 additions and 93 deletions.
37 changes: 37 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---

**Describe the bug** A clear and concise description of what the bug is.

**To Reproduce** Steps to reproduce the behavior:

1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior** A clear and concise description of what you expected to
happen.

**Screenshots / Loom / Video** If applicable, add screenshots to help explain
your problem.

**Desktop (please complete the following information):**

- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]

**Smartphone (please complete the following information):**

- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]

**Additional context** Add any other context about the problem here.
19 changes: 19 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---

**Is your feature request related to a problem? Please describe.** A clear and
concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like** A clear and concise description of what you
want to happen.

**Describe alternatives you've considered** A clear and concise description of
any alternative solutions or features you've considered.

**Additional context** Add any other context or screenshots about the feature
request here.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Nx Affected CI
name: PR ALL Affected Test
on:
pull_request:
branches: [main]
Expand Down
36 changes: 36 additions & 0 deletions .github/workflows/pr_push_api_build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: 'PR & Push API Build'
on:
pull_request:
branches:
- '*'
paths:
- 'libs/**'
- 'apps/api/**'
push:
branches:
- '*'
paths:
- 'libs/**'
- 'apps/api/**'

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.x]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}

- name: 'Install dependencies'
run: yarn install

- name: 'Build Api'
run: npx nx run api:build
36 changes: 36 additions & 0 deletions .github/workflows/pr_push_platform_build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: 'PR & Push Platform Build'
on:
pull_request:
branches:
- '*'
paths:
- 'libs/**'
- 'apps/platform/**'
push:
branches:
- '*'
paths:
- 'libs/**'
- 'apps/platform/**'

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.x]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}

- name: 'Install dependencies'
run: yarn install

- name: 'Build Platform'
run: npx nx run platform:build
109 changes: 75 additions & 34 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,57 +46,98 @@ community standards will help us redefine the future of SaaS development!

## Getting started

If you would like to become an Isomera contributor, the first step is to read this document in its entirety. The second step is to review the [README guidelines here](https://github.com/cortip/isomera/blob/main/README.md) to understand our coding philosophy and for a general overview of the code repository (i.e. how to run the app locally, testing, storage, our app philosophy, etc). Please read both documents before asking questions, as they may be covered within the documentation.
If you would like to become an Isomera contributor, the first step is to read
this document in its entirety. The second step is to review the
[README guidelines here](https://github.com/cortip/isomera/blob/main/README.md)
to understand our coding philosophy and for a general overview of the code
repository (i.e. how to run the app locally, testing, storage, our app
philosophy, etc). Please read both documents before asking questions, as they
may be covered within the documentation.

## Discord channels

All contributors should be a member of a shared Discord channel called #general -- this channel is used to ask general questions, facilitate discussions, and make feature requests.
All contributors should be a member of a shared Discord channel called #general
-- this channel is used to ask general questions, facilitate discussions, and
make feature requests.

Before requesting an invite to Discord please ensure your Upwork account is active, since we only pay via Upwork (see below). To request an invite to Slack, email [email protected] with the subject Discord Channel Invites. We'll send you an invite! Or you can make it much faster and just click this link https://discord.gg/T3CBgm8yPT .
Before requesting an invite to Discord please ensure your Upwork account is
active, since we only pay via Upwork (see below). To request an invite to Slack,
email [email protected] with the subject Discord Channel Invites. We'll
send you an invite! Or you can make it much faster and just click this link
https://discord.gg/T3CBgm8yPT .

Note: Do not send direct messages to the Isomera team in Discord or Isomera Chat, they will not be able to respond.
Note: Do not send direct messages to the Isomera team in Discord or Isomera
Chat, they will not be able to respond.

Note: if you are hired for an Upwork job and have any job-specific questions, please ask in the GitHub issue or pull request. This will ensure that the person addressing your question has as much context as possible.
Note: if you are hired for an Upwork job and have any job-specific questions,
please ask in the GitHub issue or pull request. This will ensure that the person
addressing your question has as much context as possible.

## Code of Conduct

This project and everyone participating in it is governed by the [Isomera Code of Conduct](https://github.com/cortip/isomera/blob/main/CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [email protected].
This project and everyone participating in it is governed by the
[Isomera Code of Conduct](https://github.com/cortip/isomera/blob/main/CODE_OF_CONDUCT.md).
By participating, you are expected to uphold this code. Please report
unacceptable behavior to [email protected].

## Restrictions

At this time, we are not hiring contractors in Crimea, North Korea, Russia, Iran, Cuba, or Syria.
At this time, we are not hiring contractors in Crimea, North Korea, Russia,
Iran, Cuba, or Syria.

## Payment for Contributions

> Please note, that normally we invite to contribute enthusiasts for free, but also, sometimes to make things move faster we take some paid help from Upwork. This section does not mean that all contributions are paid.
> Important: we are building a website to showcase Isomera contributor profiles. Contributors who contributed as contractors (hired) will not be listed there.
We hire and pay external contributors via Upwork.com. If you'd like to be paid for contributing, please create an Upwork account, apply for an [available job in GitHub](https://github.com/cortip/isomera/labels/help%20wanted), and finally apply for the job in Upwork once your proposal gets selected in GitHub. Please make sure your Upwork profile is fully verified before applying, otherwise, you run the risk of not being paid. If you think your compensation should be increased for a specific job, you can request a reevaluation by commenting on the GitHub issue where the Upwork job was posted.

Payment for your contributions will be made no less than 7 days after the pull request is deployed to production to allow for regression testing. If you have not received payment after 8 days of the PR being deployed to production, and there are no regressions, please add a comment to the issue mentioning the vygandas team member.

New contributors are limited to working on one job at a time, however experienced contributors may work on numerous jobs simultaneously.

Please be aware that compensation for any support in solving an issue is provided entirely at Isomera’s discretion. Personal time or resources applied towards investigating a proposal will not guarantee compensation. Compensation is only guaranteed to those who propose a solution and get hired for that job. We understand there may be cases where a selected proposal may take inspiration from a previous proposal. Unfortunately, it’s not possible for us to evaluate every individual case and we have no process that can efficiently do so. Issues with higher rewards come with higher risk factors so try to keep things civil and make the best proposal you can. Once again, any information provided may not necessarily lead to you getting hired for that issue or compensated in any way.

Important: Payment amounts are variable, dependent on if there are any regressions. Your PR will be reviewed by a Contributor+ (C+) team member and an internal engineer. All tests must pass and all code must pass lint checks before a merge.
> Please note, that normally we invite to contribute enthusiasts for free, but
> also, sometimes to make things move faster we take some paid help from Upwork.
> This section does not mean that all contributions are paid.
> Important: we are building a website to showcase Isomera contributor profiles.
> Contributors who contributed as contractors (hired) will not be listed there.
We hire and pay external contributors via Upwork.com. If you'd like to be paid
for contributing, please create an Upwork account, apply for an
[available job in GitHub](https://github.com/cortip/isomera/labels/help%20wanted),
and finally apply for the job in Upwork once your proposal gets selected in
GitHub. Please make sure your Upwork profile is fully verified before applying,
otherwise, you run the risk of not being paid. If you think your compensation
should be increased for a specific job, you can request a reevaluation by
commenting on the GitHub issue where the Upwork job was posted.

Payment for your contributions will be made no less than 7 days after the pull
request is deployed to production to allow for regression testing. If you have
not received payment after 8 days of the PR being deployed to production, and
there are no regressions, please add a comment to the issue mentioning the
vygandas team member.

New contributors are limited to working on one job at a time, however
experienced contributors may work on numerous jobs simultaneously.

Please be aware that compensation for any support in solving an issue is
provided entirely at Isomera’s discretion. Personal time or resources applied
towards investigating a proposal will not guarantee compensation. Compensation
is only guaranteed to those who propose a solution and get hired for that job.
We understand there may be cases where a selected proposal may take inspiration
from a previous proposal. Unfortunately, it’s not possible for us to evaluate
every individual case and we have no process that can efficiently do so. Issues
with higher rewards come with higher risk factors so try to keep things civil
and make the best proposal you can. Once again, any information provided may not
necessarily lead to you getting hired for that issue or compensated in any way.

Important: Payment amounts are variable, dependent on if there are any
regressions. Your PR will be reviewed by a Contributor+ (C+) team member and an
internal engineer. All tests must pass and all code must pass lint checks before
a merge.

### Regressions

If a PR causes a regression at any point within the regression period (starting when the code is merged and ending 168 hours (that's 7 days) after being deployed to production):

- payments will be issued 7 days after all regressions are fixed (ie: deployed to production)
- a 50% penalty will be applied to the Contributor and Contributor+ for each regression on an issue

The 168 hours (aka 7 days) will be measured by calculating the time between when the PR is merged.








If a PR causes a regression at any point within the regression period (starting
when the code is merged and ending 168 hours (that's 7 days) after being
deployed to production):

- payments will be issued 7 days after all regressions are fixed (ie: deployed
to production)
- a 50% penalty will be applied to the Contributor and Contributor+ for each
regression on an issue

The 168 hours (aka 7 days) will be measured by calculating the time between when
the PR is merged.
28 changes: 18 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ all-encompassing Javascript/Typescript starter boilerplate monorepo. Designed
for visionary developers, ISOMERA streamlines the creation of enterprise-grade
applications by providing a robust, modular, and scalable foundation. Whether
you're kickstarting a project with React, Next, Nest, or diving deep into
TypeORM, Redux, and Material UI, our platform is your ticket to efficiency.
Beyond a mere boilerplate, ISOMERA offers comprehensive documentation, training
materials, and a community-driven approach. Contribute to the revolution, join a
community of like-minded developers, and redefine the standards of SaaS
development.
TypeORM, React Query, and Material UI, our platform is your ticket to
efficiency. Beyond a mere boilerplate, ISOMERA offers comprehensive
documentation, training materials, and a community-driven approach. Contribute
to the revolution, join a community of like-minded developers, and redefine the
standards of SaaS development.

Every developer understands the journey: starting with basic functionalities
and, over time, integrating advanced features like 2FA, role management, or
Expand All @@ -44,6 +44,14 @@ innovators, and let's co-create the ultimate Javascript/Typescript boilerplate
for the next generation. Join the ISOMERA family and let's craft the future, one
line of code at a time. 🚀

## Thanks to our sponsors

<p align="center" style="text-align: center;">
<a href="https://www.cortip.com" target="_blank" style="text-decoration: none;"><img src="https://raw.githubusercontent.com/cortip/isomera/main/docs/assets/sponsors/cortip.png" width="200" alt="Cortip" /></a>
<a href="https://www.atlassian.com" target="_blank" style="text-decoration: none;"><img src="https://raw.githubusercontent.com/cortip/isomera/main/docs/assets/sponsors/atlassian.png" width="200" alt="Atlassian" /></a>
<a href="https://sentry.io" target="_blank" style="text-decoration: none;"><img src="https://raw.githubusercontent.com/cortip/isomera/main/docs/assets/sponsors/sentry.png" width="200" alt="Sentry" /></a>
</p>

## Preview

- Landing page https://www.isomera.org/
Expand Down Expand Up @@ -72,12 +80,12 @@ line of code at a time. 🚀

- TypeScript
- React
- Redux-toolkit
- React Query
- Next.js
- Nest.js
- TypeORM
- Formik
- Yup
- Class-validator (for Formik validations & DTOs)
- Luxon

## SDLC ToDo
Expand All @@ -96,16 +104,16 @@ line of code at a time. 🚀
- [x] Generated documentation for API with Compodoc
- [x] Swagger for API endpoints
- [x] DTO as shared lib
- [ ] Redux-toolkit for app data storage
- [x] React Query for app data storage
- [x] Interfaces as shared lib
- [x] Utils as shared lib (for example time formatting)
- [ ] TypeORM & DB migrations
- [x] TypeORM & DB migrations
- [ ] Plan a strict rules for timestamps (this is frequent problem for projects
where users has to interact across multiple timezones)
- [ ] Connect S3 or other object bucket
- [ ] Production Dockerfiles
- [ ] SSL in development
- [ ] Transactional emails and templates (prod/dev)
- [x] Transactional emails and templates (prod/dev)
- [ ] Websockets for notifications and updates
- [ ] GDPR compliance
- [ ] Easy solution for roles and access management
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<div>
<p>Hello {{name}}</p>
<label for='confirmation-code'>Confirmation code</label>
<p>
{{code}}
</p>

<p>If you did not request this email you can safely ignore it.</p>
</div>
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<div>
<p>Hello {{name}}</p>
<label for='reset-code'>Password reset code</label>
<p>
{{code}}
</p>

<p>If you did not request this email you can safely ignore it.</p>
</div>
13 changes: 13 additions & 0 deletions apps/api/mailer/templates/mailer/templates/welcome.hbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<h5>Dear, {{user.firstName}}</h5>,

<p>
Welcome to Isomera, a SaaS starter!
<br />
Kind regards,
<br />
Isomera team
<br />
[email protected]
<br />
https://isomera.com
</p>
11 changes: 10 additions & 1 deletion apps/api/nest-cli.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,16 @@
"collection": "@nestjs/schematics",
"sourceRoot": "apps/api/src",
"compilerOptions": {
"tsConfigPath": "apps/api/tsconfig.app.json"
"tsConfigPath": "apps/api/tsconfig.app.json",
"assets": [
{
"include": "**/*.hbs",
"watchAssets": true,
"outDir": "dist/apps/api/src"
},
{ "include": "**/*.txt" }
],
"plugins": ["@nestjs/swagger/plugin"]
},
"entryFile": "../dist/apps/api/src/main"
}
Loading

0 comments on commit 9807bd8

Please sign in to comment.