rsnext/examples/with-tesfy/pages/index.js
Andres Alvarez 6424e1f1d9
Add A/B Tests and Feature Flags example (#13629)
## Summary
This PR adds a basic example of how [Tesfy](https://tesfy.io/) could be integrated with Next.js. Tesfy is a project that I've working on during quarantine weekends, mainly to learn new stuff and provide **free** and **unlimited** A/B Tests and Feature Flags while keeping a good performance and the library [size](https://bundlephobia.com/result?p=react-tesfy@1.2.1) as small as possible.

The configuration file could be set up using a [web application](https://app.tesfy.io/) (hosted in Vercel 🎉 ) or by your self.

## Implementation
- Created `with-tesfy` folder
- Added two pages `index.js` and `features.js` to show how experiments and features could be used
- The only thing that must be persisted is the `userId`. Used a cookie to save it.
- Uses `getServerSideProps` to fetch the configuration file and get/create the `userId`.

## Screenshots

There are some screenshots from the web application. Where you can easily configure experiments and audiences per project. Teams and features will soon be added.

![Screenshot 2020-06-01 at 15 40 49](https://user-images.githubusercontent.com/6877967/83414811-60e7ce80-a41e-11ea-9e5c-887c66e80c65.png)
![Screenshot 2020-06-01 at 15 41 02](https://user-images.githubusercontent.com/6877967/83414823-66451900-a41e-11ea-885b-b58e78b042bb.png)
![Screenshot 2020-06-01 at 15 41 11](https://user-images.githubusercontent.com/6877967/83414828-6a713680-a41e-11ea-90a8-8d39a17f19a1.png)

This is my first PR! sorry if I made something wrong 😞 . Any feedback is more than welcome. Also I want to thank you all for the awesome work with Next.js ❤️
2020-06-21 23:59:53 +00:00

43 lines
1.1 KiB
JavaScript

import { Experiment, Variation } from 'react-tesfy'
import { getTesfyProps } from '../utils'
export const getServerSideProps = getTesfyProps(async () => {
return { props: {} }
})
const IndexPage = () => {
return (
<>
<h1>Experiments</h1>
<section>
<h2>Experiment 1 - Allocation</h2>
<Experiment id="experiment-1">
<Variation>
<p style={{ color: 'yellow' }}>Yellow</p>
</Variation>
<Variation id="0">
<p style={{ color: 'blue' }}>Blue</p>
</Variation>
<Variation id="1">
<p style={{ color: 'red' }}>Red</p>
</Variation>
</Experiment>
</section>
<section>
<h2>Experiment 2 - Audience</h2>
<Experiment id="experiment-2" attributes={{ countryCode: 'us' }}>
<Variation>
<p style={{ fontWeight: 'bold' }}>Bold</p>
</Variation>
<Variation id="0">
<p>Normal</p>
</Variation>
</Experiment>
</section>
</>
)
}
export default IndexPage