Skip to content

Commit

Permalink
#149 Rebuild Dashboard app (#150)
Browse files Browse the repository at this point in the history
* #149 Rebuild Dashboard app

* updating otel in payment-api

* adding admin dashboard changes
  • Loading branch information
jurabek authored Mar 16, 2024
1 parent bacf9ad commit 201c6fc
Show file tree
Hide file tree
Showing 30 changed files with 6,111 additions and 555 deletions.
6 changes: 6 additions & 0 deletions src/backend/docker/docker-compose.traefik.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,12 @@ services:
- "traefik.http.routers.web.rule=PathPrefix(`/`)"
- "traefik.port=3001"

payment-api:
labels:
- "traefik.enable=true"
- "traefik.http.routers.payment.rule=PathPrefix(`/payment/`)"
- "traefik.port=8980"

identity-api:
labels:
- "traefik.enable=true"
Expand Down
52 changes: 29 additions & 23 deletions src/backend/services/payment-api/go.mod
Original file line number Diff line number Diff line change
@@ -1,28 +1,34 @@
module github.com/chayxana/payment-api

go 1.21
go 1.22

require (
github.com/google/uuid v1.3.1
github.com/google/uuid v1.4.0
github.com/rs/zerolog v1.28.0
github.com/sgumirov/go-cards-validation v0.0.0-20191102204147-d5f054e8d29b
github.com/stretchr/testify v1.8.2
go.opentelemetry.io/otel/trace v1.14.0
google.golang.org/grpc v1.60.1
google.golang.org/protobuf v1.31.0
github.com/stretchr/testify v1.8.4
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0
go.opentelemetry.io/otel v1.24.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0
go.opentelemetry.io/otel/metric v1.24.0 // indirect
go.opentelemetry.io/otel/sdk v1.24.0
go.opentelemetry.io/otel/trace v1.24.0
google.golang.org/grpc v1.61.1
google.golang.org/protobuf v1.32.0

)

require (
github.com/cenkalti/backoff/v4 v4.2.0 // indirect
github.com/go-logr/logr v1.2.3 // indirect
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/go-logr/logr v1.4.1 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 // indirect
go.opentelemetry.io/otel/metric v0.37.0 // indirect
go.opentelemetry.io/proto/otlp v0.19.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 // indirect
go.opentelemetry.io/proto/otlp v1.1.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect
)

require (
Expand All @@ -34,13 +40,13 @@ require (
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/smartystreets/goconvey v1.7.2 // indirect
github.com/stretchr/objx v0.5.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0
go.opentelemetry.io/otel v1.14.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0
go.opentelemetry.io/otel/sdk v1.14.0
golang.org/x/net v0.16.0 // indirect
golang.org/x/sys v0.13.0 // indirect
golang.org/x/text v0.13.0 // indirect
google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97 // indirect
golang.org/x/net v0.21.0 // indirect
golang.org/x/sys v0.17.0 // indirect
golang.org/x/text v0.14.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)

require (
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.24.0 // indirect
go.opentelemetry.io/otel/sdk/metric v1.24.0 // indirect
)
513 changes: 62 additions & 451 deletions src/backend/services/payment-api/go.sum

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,9 @@ var ErrUnsupportedCardType = errors.New("card type unsupported")
var ErrInvalidCardInfo = errors.New("invalid card information")

func (p *PaymentServiceGrpc) GetPaymentMethods(context.Context, *pbv1.GetPaymentMethodsRequest) (*pbv1.GetPaymentMethodsResponse, error) {
return nil, nil
return nil, nil
}

// Payment implements v1.PaymentServiceServer
func (p *PaymentServiceGrpc) Payment(ctx context.Context, req *pbv1.PaymentRequest) (res *pbv1.PaymentResponse, err error) {
var tracer = otel.Tracer("payment-api/grpc")
Expand Down
58 changes: 58 additions & 0 deletions src/backend/services/payment-api/handlers/payment-methods.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package handlers

import (
"encoding/json"
"net/http"
"strconv"
)

type PaymentMethodsHandler struct {
}

type PaymentMethod struct {
ID int `json:"id"`
Name string `json:"name"`
Description string `json:"description"`
}

var paymentMethods = []PaymentMethod{
{ID: 1, Name: "Visa", Description: "Credit card"},
{ID: 2, Name: "Mastercard", Description: "Credit card"},
{ID: 3, Name: "PayPal", Description: "Online payment"},
}

var paymentMethodsMap = map[int]PaymentMethod{
1: {ID: 1, Name: "Visa", Description: "Credit card"},
2: {ID: 2, Name: "Mastercard", Description: "Credit card"},
3: {ID: 3, Name: "PayPal", Description: "Online payment"},
}

func (p *PaymentMethodsHandler) GetPaymentMethods(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
if err := json.NewEncoder(w).Encode(paymentMethods); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.WriteHeader(http.StatusOK)
}

func (p *PaymentMethodsHandler) GetPaymentMethod(w http.ResponseWriter, r *http.Request) {
id := r.PathValue("id")

idInt, err := strconv.Atoi(id)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}

paymentMethod, contains := paymentMethodsMap[idInt]
if !contains {
http.Error(w, "payment method not found", http.StatusNotFound)
return
}

if err := json.NewEncoder(w).Encode(paymentMethod); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
}
26 changes: 26 additions & 0 deletions src/backend/services/payment-api/handlers/payment-methods_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package handlers

import (
"net/http"
"testing"
)

func TestPaymentMethodsHandler_GetPaymentMethod(t *testing.T) {
type args struct {
w http.ResponseWriter
r *http.Request
}
tests := []struct {
name string
p *PaymentMethodsHandler
args args
}{
// TODO: Add test cases.
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
p := &PaymentMethodsHandler{}
p.GetPaymentMethod(tt.args.w, tt.args.r)
})
}
}
3 changes: 3 additions & 0 deletions src/backend/services/web.admin/dashboard-app/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"extends": "next/core-web-vitals"
}
36 changes: 36 additions & 0 deletions src/backend/services/web.admin/dashboard-app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.js
.yarn/install-state.gz

# testing
/coverage

# next.js
/.next/
/out/

# production
/build

# misc
.DS_Store
*.pem

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# local env files
.env*.local

# vercel
.vercel

# typescript
*.tsbuildinfo
next-env.d.ts
1 change: 1 addition & 0 deletions src/backend/services/web.admin/dashboard-app/.nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
20
36 changes: 36 additions & 0 deletions src/backend/services/web.admin/dashboard-app/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).

## Getting Started

First, run the development server:

```bash
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
```

Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.

You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.

This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.

## Learn More

To learn more about Next.js, take a look at the following resources:

- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.

You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!

## Deploy on Vercel

The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.

Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
16 changes: 16 additions & 0 deletions src/backend/services/web.admin/dashboard-app/components.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"$schema": "https://ui.shadcn.com/schema.json",
"style": "default",
"rsc": true,
"tsx": true,
"tailwind": {
"config": "tailwind.config.ts",
"css": "src/app/globals.css",
"baseColor": "gray",
"cssVariables": false
},
"aliases": {
"utils": "@/lib/utils",
"components": "@/components"
}
}
4 changes: 4 additions & 0 deletions src/backend/services/web.admin/dashboard-app/next.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/** @type {import('next').NextConfig} */
const nextConfig = {};

export default nextConfig;
Loading

0 comments on commit 201c6fc

Please sign in to comment.