Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into cristi_instantly-show…
Browse files Browse the repository at this point in the history
…-abracadabra-page
  • Loading branch information
cristipaval committed Feb 27, 2023
2 parents 0e0e851 + 6a3ec3a commit d267c3a
Show file tree
Hide file tree
Showing 118 changed files with 1,594 additions and 705 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
key: ${{ runner.os }}-jest

- name: Jest tests
run: npx jest --shard=${{ fromJSON(matrix.chunk) }}/${{ strategy.job-total }} --max-workers ${{ steps.cpu-cores.outputs.count }}
run: npx jest --silent --shard=${{ fromJSON(matrix.chunk) }}/${{ strategy.job-total }} --max-workers ${{ steps.cpu-cores.outputs.count }}

shellTests:
if: ${{ github.actor != 'OSBotify' || github.event_name == 'workflow_call' }}
Expand Down
189 changes: 189 additions & 0 deletions SmallbusinessPlaybook

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -156,8 +156,8 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
multiDexEnabled rootProject.ext.multiDexEnabled
versionCode 1001027400
versionName "1.2.74-0"
versionCode 1001027607
versionName "1.2.76-7"
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()

if (isNewArchitectureEnabled()) {
Expand Down
5 changes: 5 additions & 0 deletions android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
4 changes: 4 additions & 0 deletions android/app/src/main/res/values/ic_launcher_background.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#3DDC84</color>
</resources>
2 changes: 1 addition & 1 deletion android/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=512m

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
Expand Down
1 change: 1 addition & 0 deletions assets/animations/Fireworks.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions assets/animations/ReviewingBankInfo.json

Large diffs are not rendered by default.

Binary file removed assets/images/confetti-pop.gif
Binary file not shown.
1 change: 1 addition & 0 deletions config/webpack/webpack.common.js
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,7 @@ const webpackConfig = ({envFile = '.env', platform = 'web'}) => ({
'react-native$': '@expensify/react-native-web',
'react-native-web': '@expensify/react-native-web',
'react-content-loader/native': 'react-content-loader',
'lottie-react-native': 'react-native-web-lottie',
},

// React Native libraries may have web-specific module implementations that appear with the extension `.web.js`
Expand Down
33 changes: 33 additions & 0 deletions contributingGuides/TestRail_Navigation_C+.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# TestRail Navigation and Process for Contributor Plus (C+)

## Context
C+ are responsible for finding the appropriate location for new or updated regression test cases when NewDot bugs are fixed. Contributors working on fixing these bugs will then propose test steps to be added to [TestRail](https://expensify.testrail.io/index.php?/dashboard). This document is intended to give a short overview on how to navigate TestRail and best practices on choosing the correct location for the proposed steps.

As a C+ member, you will have view-only access to Expensify's TestRail account in order to complete this task.

## Navigating TestRail
- Expensify's TestRail account is broken down into four projects. For the purpose of this document, we will focus on the project titled `NewDot - New Expensify (New Format)`. Click on this project.
- <img width="542" alt="Screenshot 2023-02-24 at 12 02 28 PM" src="https://user-images.githubusercontent.com/3885503/221150420-a23a2be4-bffd-4ad7-8559-ad22377a6eaf.png">
- Within the project, you will find six headers that showcase the sub-categories of this project. Here, click on `Test Suites and Cases`.
- <img width="772" alt="Screenshot 2023-02-24 at 12 04 30 PM" src="https://user-images.githubusercontent.com/3885503/221150806-5010996c-a813-489e-859c-66cf4a53b39d.png">
- You will then be showed the various Test Suites and Cases available. Click on `New Expensify`.
- You now will have the overview of our various test cases that our outsourced QA team, Applause, run every day. On the right hand side, you will see a list of folders that detail different scenarios we house tests under. Clicking on one of these folders will then bring you to the list of specific test cases we currently have for the scenario in question.
- Clicking on one of the test cases will then take you to the overview of the steps taken by Applause to ensure everything works as expected for that specific test. You will notice the expected behaviors are identified by the action word `Verify`.

## Process for adding or updating TestRail Cases
- Before proposing regression test steps, the C+ should first open [TestRail](https://expensify.testrail.io/index.php?/dashboard) and identify which existing scenario the bug in question best belongs in (e.g. A bug identified in the flow for updating preferred pronouns would fall under Account Settings).
- Following, the C+ will then determine if there's an existing test case under the scenario that we can update to encompass the new steps that will be proposed OR if we need to create a new test case to accommodate the proposed steps.
- Once determined, the C+ will post a comment in the original GH issue, mentioning which scenario the bug belongs under, why they think it belongs there, and if the new / updated test steps can fall under a current test case or if a new test case needs to be created. Please provide your reasoning for your decision in the comment and tag the BZ member to gut-check.
- If the BZ member agrees with the C+'s recommendation, we can move forward. If not, a discussion will be held on where they think it might fit better and why.
- There's a chance we will agree to not update/create a test case for the bug in question, depending on the bug.
- Once we know where the test will live, the C+ will tag the Contributor to propose test steps.
- If we're updating a current test case, the C+ will post what the current steps are in the GH for the Contributor to propose their test steps in relation to it.
- If we're creating a new test case, the C+ will note it for the Contributor.
- Once the Contributor has provided proposed test steps, the C+ will review to ensure:
- The language style matches the language style in TestRail (e.g. action items use the term `Verify`)
- The steps are clear, logical, concise, and void of any assumed knowledge
- (For updating a current test case) the steps are logically placed in the test case
- If changes are needed, the C+ and Contributor will discuss what changes should be done in order to make them appropriate
- After confirming the above, the C+ will tag the BZ member and comment that the steps are ready to be reviewed
- The BZ member will then create a GH for Applause to update the TestRail steps, link it in the original bug GH, and move forward with payment.

2 changes: 2 additions & 0 deletions docs/_data/routes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ hubs:
articles:
- href: Expensify-Playbook-for-US-based-VC-Backed-Startups
title: Expensify Playbook for US-Based VC-Backed Startups
- href: Expensify-Playbook-for-US-Based-Bootstrapped-Startups
title: Expensify Playbook for US-Based Bootstrapped Startups

- href: other
title: Other
Expand Down
17 changes: 13 additions & 4 deletions docs/_layouts/default.html
Original file line number Diff line number Diff line change
Expand Up @@ -48,20 +48,22 @@

<div id="content-area">

<!-- Article title (only shown in article pages) -->
{% if page.url contains "/articles/" %}
<div id="article-content">
<!-- Article title (only shown in article pages) -->
{% if page.url contains "/articles/" %}
<h1 class="title">
{{ page.name | remove: '.md' | split: "-" | join: " " }}
</h1>

<div class="article-toc-content article">
{{ content }}
</div>
{% else %}
{% else %}
<div class="article-toc-content lhn">
{{ content }}
</div>
{% endif %}
{% endif %}
</div>

<!-- Concierge button at the bottom of the page -->
<a class="card get-help" href="{{ CONCIERGE_CHAT_URL }}" target="_blank">
Expand All @@ -78,5 +80,12 @@ <h3 class="title with-margin">Didn't find what you were looking for?</h3>
{% include footer.html %}
</div>
</div>

<!-- Use hidden input to pass hubs data to main.js -->
<input
id="hubs-data"
type="hidden"
value={{ site.data.routes.hubs | map: 'href' | jsonify }}
/>
</body>
</html>
2 changes: 1 addition & 1 deletion docs/_sass/_main.scss
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ html {
line-height: 1;

@include maxBreakpoint($breakpoint-tablet) {
scroll-padding-top: 80px;
scroll-padding-top: 80px;
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
---
title: Expensify Playbook for US-Based Bootstrapped Startups
description: Best practices for how to deploy Expensify for your business
---

This playbook details best practices on how Bootstrapped Startups with less than 5 employees can use Expensify to prioritize product development while capturing business-related receipts for future reimbursement.
- See our *[Playbook for VC-Backed Startups](https://help.expensify.com/articles/playbooks/Expensify-Playbook-for-US-based-VC-Backed-Startups)* if you have taken venture capital investment and are more concerned with prioritizing top-line revenue growth than achieving near-term profitability
- See our *Playbook for Small Businesses* if you are more concerned with maintaining profitability than growing top-line revenue. [Coming soon…]

# Who you are
As a bootstrapped startup, you have surrounded yourself with a small handful of people you trust, and are focused on developing your concept to officially launch and possibly take to outside investors. You are likely running your business with your own money, and possibly a small amount of funding from friends and family. You are either paying yourself a little, or not at all, but at this stage, the company isn’t profitable. And for now, you are capturing receipts so that you can reimburse yourself for startup costs when you either take on investment or start to turn a profit.

# Step-by-step instructions for setting up Expensify
This playbook is built based on best practices we’ve developed after processing expenses for tens of thousands of companies around the world. As such, use this playbook as your starting point, knowing that you can customize Expensify to suit your business needs. Every company is different, and we’re always one chat away with any questions you may have.

## Step 1: Create your Expensify account
If you don't already have one, go to *[new.expensify.com](new.expensifiy.com)* and sign up for an account with your business email address.

## Step 2: Create a Free Plan Workspace
There are three plans (Free, Collect, and Control), but for your needs, we recommend the *Free Plan* for the following reasons:

- You are looking to capture receipts, but you don’t need to submit expenses to anyone for approval or reimbursement
- You are a small, highly collaborative group and project-oriented Chat functionality can help you stay organized
- When your business produces enough cash that you can pay yourself, you might want to reimburse yourself for the expenses you’ve captured

To create your Free Plan Workspace:

1. Go to *new.expensify.com*
2. Select *New Workspace*
3. Select the avatar in the top left corner
4. Click on the workspace name and rename it
5. Express yourself by adding an avatar image, preferably an image of yourself

The Free Plan also gives you direct access to lightning-fast 24/7 support via Concierge. Within new.expensify.com, you can start a direct message (DM) with Concierge anytime.

## Step 3: Invite Your Team
As a bootstrapped startup, you communicate with your team all day. Similarly, if you are a co-founder, you will have multiple people that will need to capture receipts for your project.

1. Click on your avatar
2. Select *Workspaces*
3. Click on your workspace
4. Select *Manage Members*
5. Click *Invite*, and enter each team member’s email address

By inviting your team, all members of your team will have access to unlimited receipt capture via SmartScan, and you’ll all have access to our free chat tool, which makes it easy to chat about your project and the expenses you’ve captured to help accelerate your project.

## Step 4: Link Your Business Bank Account (Optional)
If you have a business bank account at this stage, congrats! You might be better suited to check out our Seed Stage playbook. If you are located in the US, you can unlock many great features by linking your US-based business bank account such as paying bills via Expensify, along with the Expensify Card.

Here’s how to set it up:

1. Click on your *avatar*
2. Select *Workspaces*
3. Click on your workspace name
4. At the bottom, select *Connect bank account*
5. Select your bank and enter your online login credentials

Once this is done, you are all set to begin the process of enabling the Expensify Card. Not just for you, but if you have a co-founder, you can also issue them a card.

## Step 5: Get the Expensify Card
If you linked your business bank account in the previous step, you are immediately eligible for the Expensify Card. The Expensify Card is included with your Free Plan workspace, it earns you 2% cashback on all expenses, and they are all stored in your team’s workspace. It’s easy to apply and it takes minutes!

Here’s how to enable the Expensify Card:

1. Click on your *avatar*
2. Select *Workspaces*
3. Click on your workspace
4. Select *Issue Cards*
5. Next, you’ll be redirected to expensify.com
6. Set a SmartLimit > $0
7. We’ll also ask you for your mailing address to send you a physical Expensify Card

You’ll be issued a virtual card that you can use immediately, however, in 1-3 business days your Expensify Card will arrive. You can use the Expensify Card anywhere Visa is accepted.

## Step 6: View and Pay Bills
Whether it’s online services or vendors you work with to grow your project, you likely have bills to pay. And now that you have your business bank account linked, you can easily pay bills directly from Expensify. Seeing as these are project-related expenses, we’ll capture them for you for future reference directly within your project’s workspace.

There’s no actual setup required. Your free plan comes with a _yourdomain.com@expensify.com_ email address. Just have all of your vendors send bills to that email address.

To view and pay bills:

1. Click on your *avatar*
2. Select *Workspaces*
3. Click on your workspace
4. Select *Pay bills*

When you have bills to pay you can click *View all bills* under the *Manage your bills* box and we’ll keep a neatly organized list of all of the bills you can pay via ACH directly from your Expensify account.

# You’re all set!
Congrats, you are all set up! If you need any assistance with anything mentioned above, reach out to either your Concierge directly in new.expensify.com, or email concierge@expensify.com. Create a Collect or Control Policy, and we’ll automatically assign a dedicated Setup Specialist to you.

Loading

0 comments on commit d267c3a

Please sign in to comment.