O nanews é um blog por assinatura mensal utilizando o stripe como sistema de pagamento, prismic como CMS para criação dos posts e FaunaDB como banco de dados.
DEMOSTRAÇÃO DO NA NEWS
OBS: Utilizar o número de cartão 4242 4242 4242 4242 para teste!!
# clonar o repositório
git clone https://github.com/nivaldoandrade/nanews-reactjs
# Instalar as dependências dentro da pasta clonada
yarn
# Iniciar a aplicação
yarn dev
- Criar um repositório na dashboard;
- Criar um Custom Types do tipo Repeatable Type com o nome post com a build mode:
{
"Main" : {
"uid" : {
"type" : "UID",
"config" : {
"label" : "uid"
}
},
"title" : {
"type" : "StructuredText",
"config" : {
"single" : "heading1",
"label" : "Title"
}
},
"content" : {
"type" : "StructuredText",
"config" : {
"multi" : "paragraph, preformatted, heading1, heading2, heading3, heading4, heading5, heading6, strong, em, hyperlink, image, embed, list-item, o-list-item, rtl",
"allowTargetBlank" : true,
"label" : "Content"
}
}
}
}
Necessário a criação de um OAuth Apps
Para mais informações sobre o Git Hub APP: DOCUMENTAÇÃO DO GITHUB APP.
Realizar a criação de um banco de dados no FaunaDB cloud: Dashboard.
No dashboard do stripe iremos criar um produto. Opcional:
- nome: subscribe
- modelo de preços: padrão
- preço: recorrente
- Período de faturamento: Mensal
Criação Collections e Indexes:
Collections:
users - {
name: "users",
history_days: 30,
ttl_days: null
}
subscriptions - {
name: "subscriptions",
history_days: 30,
ttl_days: null
}
Indexes:
subscription_id - {
name: "subscription_id",
unique: false,
serialized: true,
source: "subscriptions",
terms: "data.id"
}
subscription_status - {
name: "subscription_status",
unique: false,
serialized: true,
source: "subscriptions",
terms: "data.status"
}
subscription_user_id - {
name: "subscription_user_id",
unique: true,
serialized: true,
source: "subscriptions",
terms: "data.user_id"
}
user_email - {
name: "user_email",
unique: true,
serialized: true,
source: "users",
terms: "data.email"
}
user_stripe_customer_id - {
name: "user_stripe_customer_id",
unique: false,
serialized: true,
source: "users",
terms: "data.stripe_customer_id"
}
#Prismic
PRISMIC_API_ENDPOINT=
PRISMIC_ACCESS_TOKEN=
Prismic API Endpoint e Gerar token: API & Security
#Stripe
STRIPE_API_KEY=
NEXT_PUBLIC_STRIPE_API_KEY=
STRIPE_WEBHOOK_SECRET=
STRIPE_PRODUCT_PRICE_ID=
STRIPE_SUCCESS_URL=http://localhost:3000/posts
STRIPE_CANCEL_URL=http://localhost:3000/
-
STRIPE_API_KEY pública e privada, na parte de desenvolvedor no dashboard do stripe : API KEYS.
-
STRIPE_WEBHOOK_SECRET é a chave que o stripe CLI cria para a aplicação saber se de fato a chama a rota webhooks está sendo feita pelo stripe CLI. OBS: Em caso da aplicação em produção precisamos gerar END POINT.
Como instalar o stripe CLI para testes no localhost e a geração da chave webhooks: DOCUMENTAÇÃO WEBHOOKS.
-
STRIPE_PRODUCT_PRICE_ID acessando o produto terá o ID do produto.
-
STRIPE_SUCCESS_URL será a URL de redirecinamento se caso o pagamento pelo stripe foi um sucesso.
-
STRIPE_CANCEL_URL será a URL de redirecinamento se caso o pagamento pelo stripe foi cancelado ou ocorreu algum erro.
#Github
GITHUB_ID=
GITHUB_SECRET=
- GITHUB_ID é o client ID gerado na criação do OAuth Apps.
- GITHUB_SECRET é a client secrets gerado na criação do OAuth Apps.
FAUNADB_KEY=
- FAUNADB_KEY gerar a chave: security > keys, será gerado chave. KEYS
#JWT
JWT_SIGNING_PRIVATE_KEY=
Seguir a seguinte DOCUMENTAÇÃO JWT_AUTO_GENERATED_SIGNING_KEY.
NEXTAUTH_URL=http://localhost:3000
- NEXTAUTH_URL é a URL da aplicação.
OBS: Em produção, modificar para a URL de acesso ao domínio cadastrado.
- ReactJS;
- Next.js;
- Typescript;
- Sass;
- Prismic;
- Stripe;
- React icons;
- Axios;
- NextAuth;
- FaunaDB.
Um pequeno aprendiz nesse grande mundo da programação. 😃🗺