From 86f805197410499b53f9f0e076c1ba81622958af Mon Sep 17 00:00:00 2001 From: David Oduneye <44040421+DOOduneye@users.noreply.github.com> Date: Mon, 27 May 2024 19:22:43 -0700 Subject: [PATCH 1/9] feat: redis (#859) Co-authored-by: garrettladley Co-authored-by: Garrett Ladley <92384606+garrettladley@users.noreply.github.com> --- .gitignore | 1 + CONTRIBUTING.md | 3 + backend/auth/jwt.go | 31 +-- backend/config/config.go | 13 ++ backend/config/redis.go | 41 ++++ backend/constants/auth.go | 6 +- backend/constants/redis.go | 13 ++ backend/database/store/active_token.go | 39 ++++ backend/database/store/blacklist.go | 36 ++++ backend/database/store/limiter.go | 50 +++++ backend/database/store/redis.go | 94 +++++++++ backend/database/store/store.go | 76 +++++++ backend/docker-compose.yml | 35 ++++ backend/entities/auth/base/controller.go | 38 ++-- backend/entities/auth/base/routes.go | 7 +- backend/entities/auth/base/service.go | 137 +++++++++++-- backend/entities/auth/models.go | 4 - backend/errs/redis.go | 5 + backend/go.mod | 5 +- backend/go.sum | 10 + backend/main.go | 25 ++- backend/middleware/auth/auth.go | 16 +- backend/middleware/auth/middleware.go | 5 +- backend/middleware/utility/limiter.go | 1 + backend/middleware/utility/middleware.go | 5 +- backend/server/server.go | 9 +- backend/tests/api/helpers/app.go | 4 +- backend/tests/api/helpers/redis.go | 30 +++ backend/tests/api/mocks/redis_mock.go | 124 +++++++++++ backend/types/params.go | 5 +- backend/utilities/exit.go | 11 + backend/utilities/manipulator.go | 9 + cli/cmd/redis.go | 61 ++++++ cli/go.sum | 55 ----- cli/helpers/backend.go | 5 + cli/helpers/redis.go | 33 +++ config/local.yml | 16 ++ go.work.sum | 251 ++++++++++++++++++----- 38 files changed, 1099 insertions(+), 210 deletions(-) create mode 100644 backend/config/redis.go create mode 100644 backend/constants/redis.go create mode 100644 backend/database/store/active_token.go create mode 100644 backend/database/store/blacklist.go create mode 100644 backend/database/store/limiter.go create mode 100644 backend/database/store/redis.go create mode 100644 backend/database/store/store.go create mode 100644 backend/docker-compose.yml create mode 100644 backend/errs/redis.go create mode 100644 backend/tests/api/helpers/redis.go create mode 100644 backend/tests/api/mocks/redis_mock.go create mode 100644 backend/utilities/exit.go create mode 100644 cli/cmd/redis.go create mode 100644 cli/helpers/redis.go diff --git a/.gitignore b/.gitignore index c20457a15..af7dd576d 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,4 @@ frontend/mobile/android/ tmp/ ios android +.idea/modules.xml diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d05e1d14c..d8643b9ce 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -16,6 +16,9 @@ - [PostgreSQL](https://www.postgresql.org/) - Install through brew: `brew install postgresql@15` - It requires you to add all the exports to path so read the end of the installation carefully! +- [Redis](https://redis.io/docs/latest/operate/oss_and_stack/install/install-stack/) + - Install through brew: `brew tap redis-stack/redis-stack` + - Then install: `brew install redis-stack` - [Trunk](https://marketplace.visualstudio.com/items?itemName=Trunk.io) (Recommended!) - Visual Studio Code extension for linting/formatting - [migrate](https://github.com/golang-migrate/migrate) diff --git a/backend/auth/jwt.go b/backend/auth/jwt.go index 5aec8d5e4..fb66f5803 100644 --- a/backend/auth/jwt.go +++ b/backend/auth/jwt.go @@ -276,35 +276,22 @@ func copyCustomClaims(claims *jwt.MapClaims, customClaims map[string]interface{} } } -func GenerateRefreshCookie(value string) *fiber.Cookie { - return &fiber.Cookie{ +func SetResponseTokens(c *fiber.Ctx, tokens *Token) { + c.Set("Authorization", fmt.Sprintf("Bearer %s", tokens.AccessToken)) + c.Cookie(&fiber.Cookie{ Name: "refresh_token", - Value: value, + Value: string(tokens.RefreshToken), Expires: time.Now().Add(constants.REFRESH_TOKEN_EXPIRY), HTTPOnly: true, - } + }) } -func SetResponseTokens(c *fiber.Ctx, tokens *Token) error { - // Set the tokens in the response - // should also blacklist the old refresh and access tokens - - c.Set("Authorization", fmt.Sprintf("Bearer %s", tokens.AccessToken)) +func ExpireResponseTokens(c *fiber.Ctx) { + c.Set("Authorization", "") c.Cookie(&fiber.Cookie{ Name: "refresh_token", - Value: string(tokens.RefreshToken), - Expires: time.Now().Add(constants.REFRESH_TOKEN_EXPIRY), + Value: "", + Expires: time.Now().Add(-time.Hour), HTTPOnly: true, }) - - return nil } - -// func ExpireCookie(name string) *fiber.Cookie { -// return &fiber.Cookie{ -// Name: name, -// Value: "", -// Expires: time.Now().Add(-time.Hour), -// HTTPOnly: true, -// } -// } diff --git a/backend/config/config.go b/backend/config/config.go index ae7097431..487be2715 100644 --- a/backend/config/config.go +++ b/backend/config/config.go @@ -10,6 +10,7 @@ import ( type Settings struct { Application ApplicationSettings Database DatabaseSettings + Redis []RedisSettings SuperUser SuperUserSettings Auth AuthSettings AWS AWSSettings @@ -24,6 +25,7 @@ type Settings struct { type intermediateSettings struct { Application ApplicationSettings `yaml:"application"` Database intermediateDatabaseSettings `yaml:"database"` + Redis []intermediateRedisSettings `yaml:"redis"` SuperUser intermediateSuperUserSettings `yaml:"superuser"` Auth intermediateAuthSettings `yaml:"authsecret"` Calendar intermediateCalendarSettings `yaml:"calendar"` @@ -35,6 +37,16 @@ func (int *intermediateSettings) into() (*Settings, error) { return nil, err } + redisSettings := make([]RedisSettings, len(int.Redis)) + for i, r := range int.Redis { + redisInstance, err := r.into() + if err != nil { + return nil, err + } + + redisSettings[i] = *redisInstance + } + superUserSettings, err := int.SuperUser.into() if err != nil { return nil, err @@ -53,6 +65,7 @@ func (int *intermediateSettings) into() (*Settings, error) { return &Settings{ Application: int.Application, Database: *databaseSettings, + Redis: redisSettings, SuperUser: *superUserSettings, Auth: *authSettings, Calendar: *calendarSettings, diff --git a/backend/config/redis.go b/backend/config/redis.go new file mode 100644 index 000000000..ab1ef9667 --- /dev/null +++ b/backend/config/redis.go @@ -0,0 +1,41 @@ +package config + +import ( + "errors" + + m "github.com/garrettladley/mattress" +) + +type RedisSettings struct { + Username string `yaml:"username"` + Host string `yaml:"host"` + Port uint `yaml:"port"` + Password *m.Secret[string] `yaml:"password"` + DB int `yaml:"db"` + // TLSConfig *TLSConfig `yaml:"tlsconfig"` +} + +func (int *intermediateRedisSettings) into() (*RedisSettings, error) { + password, err := m.NewSecret(int.Password) + if err != nil { + return nil, errors.New("failed to create secret from password") + } + + return &RedisSettings{ + Username: int.Username, + Host: int.Host, + Port: int.Port, + Password: password, + DB: int.DB, + // TLSConfig: int.TLSConfig.into(), + }, nil +} + +type intermediateRedisSettings struct { + Username string `yaml:"username"` + Host string `yaml:"host"` + Port uint `yaml:"port"` + Password string `yaml:"password"` + DB int `yaml:"db"` + // TLSConfig *intermediateTLSConfig `yaml:"tlsconfig"` +} diff --git a/backend/constants/auth.go b/backend/constants/auth.go index 9a014df3b..894f49783 100644 --- a/backend/constants/auth.go +++ b/backend/constants/auth.go @@ -3,8 +3,10 @@ package constants import "time" const ( - ACCESS_TOKEN_EXPIRY time.Duration = time.Minute * 24 * 30 // temporary TODO: change to 60 minutes - REFRESH_TOKEN_EXPIRY time.Duration = time.Minute * 24 * 30 + ACCESS_TOKEN_EXPIRY time.Duration = time.Hour * 12 + REFRESH_TOKEN_EXPIRY time.Duration = time.Hour * 24 * 30 + OTP_LENGTH int = 6 + OTP_EXPIRY time.Duration = time.Minute * 5 CSRF_TOKEN_LENGTH int = 32 ) diff --git a/backend/constants/redis.go b/backend/constants/redis.go new file mode 100644 index 000000000..229acff5b --- /dev/null +++ b/backend/constants/redis.go @@ -0,0 +1,13 @@ +package constants + +import "time" + +const ( + REDIS_MAX_IDLE_CONNECTIONS int = 10 + REDIS_MAX_OPEN_CONNECTIONS int = 100 + TOKEN_BLACKLIST_SKEY string = "token_blacklist" + TOKEN_BLACKLIST_KEY string = "blacklisted" + RATE_LIMIT_DURATION time.Duration = 5 * time.Minute + RATE_LIMIT_MAX_REQUESTS int = 5 + REDIS_TIMEOUT time.Duration = 200 * time.Millisecond +) diff --git a/backend/database/store/active_token.go b/backend/database/store/active_token.go new file mode 100644 index 000000000..0fd669d29 --- /dev/null +++ b/backend/database/store/active_token.go @@ -0,0 +1,39 @@ +package store + +import ( + "context" + "time" +) + +type ActiveTokenInterface interface { + StoreRefreshToken(ctx context.Context, token string, userID string, expiry time.Duration) error + IsActive(ctx context.Context, token string) (bool, error) + GetRefreshToken(ctx context.Context, token string) (string, error) + DeleteRefreshToken(ctx context.Context, token string) error +} + +type ActiveToken struct { + StoreClient StoreClientInterface +} + +func NewActiveToken(storeClient StoreClientInterface) *ActiveToken { + return &ActiveToken{ + StoreClient: storeClient, + } +} + +func (a *ActiveToken) StoreRefreshToken(ctx context.Context, token string, userID string, expiry time.Duration) error { + return a.StoreClient.Set(ctx, token, userID, expiry) +} + +func (a *ActiveToken) GetRefreshToken(ctx context.Context, token string) (string, error) { + return a.StoreClient.Get(ctx, token) +} + +func (a *ActiveToken) IsActive(ctx context.Context, token string) (bool, error) { + return a.StoreClient.Exists(ctx, token) +} + +func (a *ActiveToken) DeleteRefreshToken(ctx context.Context, token string) error { + return a.StoreClient.Del(ctx, token) +} diff --git a/backend/database/store/blacklist.go b/backend/database/store/blacklist.go new file mode 100644 index 000000000..22ff6ac67 --- /dev/null +++ b/backend/database/store/blacklist.go @@ -0,0 +1,36 @@ +package store + +import ( + "context" + "time" + + "github.com/GenerateNU/sac/backend/constants" +) + +type BlacklistInterface interface { + BlacklistToken(ctx context.Context, token string, expiry time.Duration) error + IsTokenBlacklisted(ctx context.Context, token string) (bool, error) +} + +type Blacklist struct { + storeClient StoreClientInterface +} + +func NewBlacklist(storeClient StoreClientInterface) *Blacklist { + return &Blacklist{ + storeClient: storeClient, + } +} + +func (b *Blacklist) BlacklistToken(ctx context.Context, token string, expiry time.Duration) error { + err := b.storeClient.SetAdd(ctx, constants.TOKEN_BLACKLIST_SKEY, token) + if err != nil { + return err + } + + return b.storeClient.Set(ctx, token, constants.TOKEN_BLACKLIST_KEY, expiry) +} + +func (b *Blacklist) IsTokenBlacklisted(ctx context.Context, token string) (bool, error) { + return b.storeClient.SetIsMember(ctx, constants.TOKEN_BLACKLIST_SKEY, token) +} diff --git a/backend/database/store/limiter.go b/backend/database/store/limiter.go new file mode 100644 index 000000000..c7bd0e3f0 --- /dev/null +++ b/backend/database/store/limiter.go @@ -0,0 +1,50 @@ +package store + +import ( + "context" + "time" +) + +// LimiterInterface is an implementation of https://github.com/gofiber/storage +type LimiterInterface interface { + Get(key string) ([]byte, error) + Set(key string, val []byte, exp time.Duration) error + Delete(key string) error + Reset() error + Close() error +} + +type Limiter struct { + StoreClient StoreClientInterface +} + +func NewLimiter(storeClient StoreClientInterface) *Limiter { + return &Limiter{ + StoreClient: storeClient, + } +} + +func (l *Limiter) Get(key string) ([]byte, error) { + value, err := l.StoreClient.Get(context.Background(), key) + if err != nil { + return nil, err + } + + return []byte(value), nil +} + +func (l *Limiter) Set(key string, val []byte, exp time.Duration) error { + return l.StoreClient.Set(context.Background(), key, string(val), exp) +} + +func (l *Limiter) Delete(key string) error { + return l.StoreClient.Del(context.Background(), key) +} + +func (l *Limiter) Reset() error { + return l.StoreClient.FlushAll(context.Background()) +} + +func (l *Limiter) Close() error { + return l.StoreClient.Close(context.Background()) +} diff --git a/backend/database/store/redis.go b/backend/database/store/redis.go new file mode 100644 index 000000000..f8235c1f2 --- /dev/null +++ b/backend/database/store/redis.go @@ -0,0 +1,94 @@ +package store + +import ( + "bytes" + "fmt" + "log/slog" + "os/exec" + + "github.com/GenerateNU/sac/backend/config" +) + +type Stores struct { + Limiter LimiterInterface + Blacklist BlacklistInterface + ActiveToken ActiveTokenInterface +} + +func NewStores(limiter LimiterInterface, blacklist BlacklistInterface, activeToken ActiveTokenInterface) *Stores { + return &Stores{ + Limiter: limiter, + Blacklist: blacklist, + ActiveToken: activeToken, + } +} + +func ConfigureRedis(settings config.Settings) *Stores { + var activeTokens *ActiveToken + var blacklist *Blacklist + var limiter *Limiter + + for _, service := range settings.Redis { + client := NewRedisClient(service.Username, service.Host, service.Port, service.Password, service.DB) + switch service.Username { + case "redis_active_tokens": + activeTokens = NewActiveToken(client) + case "redis_blacklist": + blacklist = NewBlacklist(client) + case "redis_limiter": + limiter = NewLimiter(client) + default: + slog.Error("unknown redis service", service.Username, "skipping...") + } + } + + stores := NewStores(limiter, blacklist, activeTokens) + + MustEstablishConn() + + return stores +} + +// TODO: this will be a part of a larger function that will check all services +func MustEstablishConn() { + isRunning, err := isDockerComposeRunning() + if err != nil { + panic(err) + } + + if !*isRunning { + if err := restartServices(); err != nil { + panic(err) + } + } +} + +func isDockerComposeRunning() (*bool, error) { + cmd := exec.Command("docker-compose", "ps", "-q") + + var out bytes.Buffer + cmd.Stdout = &out + err := cmd.Run() + if err != nil { + return nil, fmt.Errorf("error checking if docker-compose is running: %s", err.Error()) + } + + result := out.Len() > 0 + return &result, nil +} + +func restartServices() error { + cmd := exec.Command("docker-compose", "up", "-d") + + var out bytes.Buffer + cmd.Stdout = &out + cmd.Stderr = &out + + err := cmd.Run() + if err != nil { + return fmt.Errorf("error restarting services: %s \nconsole output: %s", err.Error(), out.String()) + } + + slog.Info("Services restarted successfully.") + return nil +} diff --git a/backend/database/store/store.go b/backend/database/store/store.go new file mode 100644 index 000000000..074765484 --- /dev/null +++ b/backend/database/store/store.go @@ -0,0 +1,76 @@ +package store + +import ( + "context" + "fmt" + "runtime" + "time" + + "github.com/GenerateNU/sac/backend/constants" + m "github.com/garrettladley/mattress" + "github.com/redis/go-redis/v9" +) + +type StoreClientInterface interface { + Set(ctx context.Context, key string, value interface{}, expiration time.Duration) error + Get(ctx context.Context, key string) (string, error) + Del(ctx context.Context, key string) error + Exists(ctx context.Context, key string) (bool, error) + SetAdd(ctx context.Context, key string, members ...interface{}) error + SetIsMember(ctx context.Context, key string, member interface{}) (bool, error) + FlushAll(ctx context.Context) error + Close(ctx context.Context) error +} + +type RedisClient struct { + client *redis.Client +} + +func NewRedisClient(username, host string, port uint, password *m.Secret[string], db int) *RedisClient { + client := redis.NewClient(&redis.Options{ + Username: username, + Addr: fmt.Sprintf("%s:%d", host, port), + Password: password.Expose(), + DB: db, + PoolSize: 10 * runtime.GOMAXPROCS(0), + MaxActiveConns: constants.REDIS_MAX_OPEN_CONNECTIONS, + MaxIdleConns: constants.REDIS_MAX_IDLE_CONNECTIONS, + }) + + return &RedisClient{ + client: client, + } +} + +func (r *RedisClient) Set(ctx context.Context, key string, value interface{}, expiration time.Duration) error { + return r.client.Set(ctx, key, value, expiration).Err() +} + +func (r *RedisClient) Get(ctx context.Context, key string) (string, error) { + return r.client.Get(ctx, key).Result() +} + +func (r *RedisClient) Del(ctx context.Context, key string) error { + return r.client.Del(ctx, key).Err() +} + +func (r *RedisClient) Exists(ctx context.Context, key string) (bool, error) { + result, err := r.client.Exists(ctx, key).Result() + return result > 0, err +} + +func (r *RedisClient) SetAdd(ctx context.Context, key string, members ...interface{}) error { + return r.client.SAdd(ctx, key, members...).Err() +} + +func (r *RedisClient) SetIsMember(ctx context.Context, key string, member interface{}) (bool, error) { + return r.client.SIsMember(ctx, key, member).Result() +} + +func (r *RedisClient) FlushAll(ctx context.Context) error { + return r.client.FlushAll(ctx).Err() +} + +func (r *RedisClient) Close(ctx context.Context) error { + return r.client.Close() +} diff --git a/backend/docker-compose.yml b/backend/docker-compose.yml new file mode 100644 index 000000000..e46632407 --- /dev/null +++ b/backend/docker-compose.yml @@ -0,0 +1,35 @@ +services: + redis-active-tokens: + image: redis/redis-stack-server:latest + container_name: redis_active_tokens + ports: + - 6379:6379 + environment: + - REDIS_PASSWORD=redispassword!#1 + volumes: + - redis-active-data:/data + + redis-blacklist: + image: redis/redis-stack-server:latest + container_name: redis_blacklist + ports: + - 6380:6379 + environment: + - REDIS_PASSWORD=redispassword!#2 + volumes: + - redis-blacklist-data:/data + + redis-limiter: + image: redis/redis-stack-server:latest + container_name: redis_limiter + ports: + - 6381:6379 + environment: + - REDIS_PASSWORD=redispassword!#3 + volumes: + - redis-limiter-data:/data + +volumes: + redis-active-data: + redis-blacklist-data: + redis-limiter-data: diff --git a/backend/entities/auth/base/controller.go b/backend/entities/auth/base/controller.go index 0b2189416..52a671e97 100644 --- a/backend/entities/auth/base/controller.go +++ b/backend/entities/auth/base/controller.go @@ -39,15 +39,12 @@ func (a *AuthController) Login(c *fiber.Ctx) error { return utilities.InvalidJSON() } - user, tokens, err := a.authService.Login(userBody) + user, tokens, err := a.authService.Login(c.UserContext(), userBody) if err != nil { return err } - err = auth.SetResponseTokens(c, tokens) - if err != nil { - return err - } + auth.SetResponseTokens(c, tokens) return c.Status(http.StatusOK).JSON(user) } @@ -73,15 +70,12 @@ func (a *AuthController) Register(c *fiber.Ctx) error { return utilities.InvalidJSON() } - user, tokens, err := a.authService.Register(userBody) + user, tokens, err := a.authService.Register(c.UserContext(), userBody) if err != nil { return err } - err = auth.SetResponseTokens(c, tokens) - if err != nil { - return err - } + auth.SetResponseTokens(c, tokens) return c.Status(http.StatusCreated).JSON(user) } @@ -106,17 +100,14 @@ func (a *AuthController) Refresh(c *fiber.Ctx) error { return utilities.InvalidCookies() } - tokens, err := a.authService.Refresh(refreshBody.RefreshToken) + tokens, err := a.authService.Refresh(c.UserContext(), refreshBody.RefreshToken) if err != nil { return err } - err = auth.SetResponseTokens(c, tokens) - if err != nil { - return err - } + auth.SetResponseTokens(c, tokens) - return utilities.FiberMessage(c, http.StatusOK, "success") + return c.SendStatus(http.StatusOK) } // Logout godoc @@ -130,12 +121,13 @@ func (a *AuthController) Refresh(c *fiber.Ctx) error { // @Success 200 {object} utilities.SuccessResponse // @Router /auth/logout [post] func (a *AuthController) Logout(c *fiber.Ctx) error { - err := a.authService.Logout(c) - if err != nil { + if err := a.authService.Logout(c.UserContext(), c.Get("Authorization"), c.Cookies("refresh_token")); err != nil { return err } - return utilities.FiberMessage(c, http.StatusOK, "success") + auth.ExpireResponseTokens(c) + + return c.SendStatus(http.StatusOK) } // ForgotPassword godoc @@ -163,7 +155,7 @@ func (a *AuthController) ForgotPassword(c *fiber.Ctx) error { return err } - return utilities.FiberMessage(c, http.StatusOK, "success") + return c.SendStatus(http.StatusOK) } // VerifyPasswordResetToken godoc @@ -192,7 +184,7 @@ func (a *AuthController) VerifyPasswordResetToken(c *fiber.Ctx) error { return err } - return utilities.FiberMessage(c, http.StatusOK, "success") + return c.SendStatus(http.StatusOK) } // SendCode godoc @@ -220,7 +212,7 @@ func (a *AuthController) SendCode(c *fiber.Ctx) error { return err } - return utilities.FiberMessage(c, http.StatusOK, "success") + return c.SendStatus(http.StatusOK) } // VerifyEmail godoc @@ -248,5 +240,5 @@ func (a *AuthController) VerifyEmail(c *fiber.Ctx) error { return err } - return utilities.FiberMessage(c, http.StatusOK, "success") + return c.SendStatus(http.StatusOK) } diff --git a/backend/entities/auth/base/routes.go b/backend/entities/auth/base/routes.go index b79cbd818..1e5c86744 100644 --- a/backend/entities/auth/base/routes.go +++ b/backend/entities/auth/base/routes.go @@ -1,6 +1,7 @@ package base import ( + "github.com/GenerateNU/sac/backend/constants" "github.com/GenerateNU/sac/backend/types" ) @@ -15,11 +16,9 @@ func Auth(params types.RouteParams) { auth.Post("/login", authController.Login) auth.Post("/refresh", authController.Refresh) - // TODO: rate limit - auth.Post("/send-code", authController.SendCode) + auth.Post("/send-code", params.UtilityMiddleware.Limiter(constants.RATE_LIMIT_MAX_REQUESTS, constants.RATE_LIMIT_DURATION), authController.SendCode) auth.Post("/verify-email", authController.VerifyEmail) - // TODO: rate limit - auth.Post("/forgot-password", authController.ForgotPassword) + auth.Post("/forgot-password", params.UtilityMiddleware.Limiter(constants.RATE_LIMIT_MAX_REQUESTS, constants.RATE_LIMIT_DURATION), authController.ForgotPassword) auth.Post("/verify-reset", authController.VerifyPasswordResetToken) } diff --git a/backend/entities/auth/base/service.go b/backend/entities/auth/base/service.go index c2ebc4371..c8a0c5415 100644 --- a/backend/entities/auth/base/service.go +++ b/backend/entities/auth/base/service.go @@ -1,31 +1,34 @@ package base import ( + "context" "errors" "fmt" "log/slog" "time" "github.com/GenerateNU/sac/backend/auth" + "github.com/GenerateNU/sac/backend/constants" authEntities "github.com/GenerateNU/sac/backend/entities/auth" "github.com/GenerateNU/sac/backend/entities/models" "github.com/GenerateNU/sac/backend/entities/users" usersEntities "github.com/GenerateNU/sac/backend/entities/users/base" + "github.com/GenerateNU/sac/backend/errs" "github.com/GenerateNU/sac/backend/types" + "github.com/GenerateNU/sac/backend/utilities" - "github.com/gofiber/fiber/v2" "github.com/golang-jwt/jwt" "gorm.io/gorm" ) type AuthServiceInterface interface { GetRole(id string) (*models.UserRole, error) - Register(userBody usersEntities.CreateUserRequestBody) (*models.User, *auth.Token, error) - Login(userBody authEntities.LoginResponseBody) (*models.User, *auth.Token, error) - Refresh(refreshToken string) (*auth.Token, error) - Logout(c *fiber.Ctx) error + Register(ctx context.Context, userBody usersEntities.CreateUserRequestBody) (*models.User, *auth.Token, error) + Login(ctx context.Context, userBody authEntities.LoginResponseBody) (*models.User, *auth.Token, error) + Refresh(ctx context.Context, refreshToken string) (*auth.Token, error) + Logout(ctx context.Context, accessToken string, refreshToken string) error SendCode(email string) error VerifyEmail(emailBody VerifyEmailRequestBody) error @@ -42,7 +45,7 @@ func NewAuthService(serviceParams types.ServiceParams) AuthServiceInterface { return &AuthService{serviceParams} } -func (a *AuthService) Login(loginBody authEntities.LoginResponseBody) (*models.User, *auth.Token, error) { +func (a *AuthService) Login(ctx context.Context, loginBody authEntities.LoginResponseBody) (*models.User, *auth.Token, error) { if err := utilities.Validate(a.Validate, loginBody, *utilities.NewMaybeError("password", auth.ValidatePassword(loginBody.Password))); err != nil { return nil, nil, err } @@ -75,10 +78,16 @@ func (a *AuthService) Login(loginBody authEntities.LoginResponseBody) (*models.U return nil, nil, err } + storeRefreshTokenCtx, storeRefreshTokenCancel := context.WithTimeoutCause(ctx, constants.REDIS_TIMEOUT, errs.ErrRedisTimeout) + defer storeRefreshTokenCancel() + if err := a.Stores.ActiveToken.StoreRefreshToken(storeRefreshTokenCtx, string(tokens.RefreshToken), user.ID.String(), constants.REFRESH_TOKEN_EXPIRY); err != nil { + return nil, nil, err + } + return user, tokens, nil } -func (a *AuthService) Register(userBody usersEntities.CreateUserRequestBody) (*models.User, *auth.Token, error) { +func (a *AuthService) Register(ctx context.Context, userBody usersEntities.CreateUserRequestBody) (*models.User, *auth.Token, error) { if err := utilities.Validate(a.Validate, userBody, *utilities.NewMaybeError("password", auth.ValidatePassword(userBody.Password))); err != nil { return nil, nil, err } @@ -111,7 +120,9 @@ func (a *AuthService) Register(userBody usersEntities.CreateUserRequestBody) (*m return nil, nil, err } - _, tokens, err := a.Login(authEntities.LoginResponseBody{Email: user.Email, Password: userBody.Password}) + loginCtx, loginCancel := context.WithTimeoutCause(ctx, constants.REDIS_TIMEOUT, errs.ErrRedisTimeout) + defer loginCancel() + _, tokens, err := a.Login(loginCtx, authEntities.LoginResponseBody{Email: user.Email, Password: userBody.Password}) if err != nil { return nil, nil, err } @@ -119,7 +130,29 @@ func (a *AuthService) Register(userBody usersEntities.CreateUserRequestBody) (*m return user, tokens, nil } -func (a *AuthService) Refresh(refreshToken string) (*auth.Token, error) { +func (a *AuthService) Refresh(ctx context.Context, refreshToken string) (*auth.Token, error) { + isActiveCtx, isActiveCancel := context.WithTimeoutCause(ctx, constants.REDIS_TIMEOUT, errs.ErrRedisTimeout) + defer isActiveCancel() + isActive, err := a.Stores.ActiveToken.IsActive(isActiveCtx, refreshToken) + if err != nil { + return nil, err + } + + if !isActive { + return nil, utilities.Unauthorized() + } + + isBlacklistedCtx, isBlacklistedCancel := context.WithTimeoutCause(ctx, constants.REDIS_TIMEOUT, errs.ErrRedisTimeout) + defer isBlacklistedCancel() + isblacklisted, err := a.Stores.Blacklist.IsTokenBlacklisted(isBlacklistedCtx, refreshToken) + if err != nil { + return nil, err + } + + if isblacklisted { + return nil, utilities.Unauthorized() + } + claims, err := a.JWT.ExtractClaims(refreshToken, auth.RefreshToken) if err != nil { return nil, err @@ -148,6 +181,24 @@ func (a *AuthService) Refresh(refreshToken string) (*auth.Token, error) { return nil, err } + blackListCtx, blackListCancel := context.WithTimeoutCause(ctx, constants.REDIS_TIMEOUT, errs.ErrRedisTimeout) + defer blackListCancel() + if err := a.Stores.Blacklist.BlacklistToken(blackListCtx, refreshToken, time.Until(time.Unix(int64(claims["exp"].(float64)), 0))); err != nil { + return nil, err + } + + deleteRefreshTokenCtx, deleteRefreshTokenCancel := context.WithTimeoutCause(ctx, constants.REDIS_TIMEOUT, errs.ErrRedisTimeout) + defer deleteRefreshTokenCancel() + if err := a.Stores.ActiveToken.DeleteRefreshToken(deleteRefreshTokenCtx, refreshToken); err != nil { + return nil, err + } + + storeRefreshTokenCtx, storeRefreshTokenCancel := context.WithTimeoutCause(ctx, constants.REDIS_TIMEOUT, errs.ErrRedisTimeout) + defer storeRefreshTokenCancel() + if err := a.Stores.ActiveToken.StoreRefreshToken(storeRefreshTokenCtx, string(tokens.RefreshToken), claims["iss"].(string), constants.REFRESH_TOKEN_EXPIRY); err != nil { + return nil, err + } + return tokens, nil } @@ -272,12 +323,12 @@ func (a *AuthService) SendCode(email string) error { return nil } - otp, err := auth.GenerateOTP(6) + otp, err := auth.GenerateOTP(constants.OTP_LENGTH) if err != nil { return fmt.Errorf("failed to generate OTP: %w", err) } - if err := SaveToken(a.DB, user.ID, *otp, models.EmailVerificationType, time.Now().Add(time.Minute*5).UTC()); err != nil { + if err := SaveToken(a.DB, user.ID, *otp, models.EmailVerificationType, time.Now().Add(constants.OTP_EXPIRY).UTC()); err != nil { return err } @@ -349,16 +400,62 @@ func (a *AuthService) VerifyEmail(emailBody VerifyEmailRequestBody) error { return nil } -func (a *AuthService) Logout(c *fiber.Ctx) error { - c.Cookie(&fiber.Cookie{ - Name: "refresh_token", - Value: "", - Expires: time.Now().Add(-time.Hour), - HTTPOnly: true, - }) - c.Set("Authorization ", "") +func (a *AuthService) Logout(ctx context.Context, accessToken string, refreshToken string) error { + if accessToken == "" { + return utilities.Unauthorized() + } + + token, err := utilities.SplitBearerToken(accessToken) + if err != nil { + return utilities.Unauthorized() + } + + blacklistAccessTokenCtx, blacklistAccessTokenCancel := context.WithTimeoutCause(ctx, constants.REDIS_TIMEOUT, errs.ErrRedisTimeout) + defer blacklistAccessTokenCancel() + if err = blacklist(blacklistAccessTokenCtx, a, token); err != nil { + return utilities.Unauthorized() + } - // TODO: blacklist the refresh token + if refreshToken == "" { + return utilities.Unauthorized() + } + + isActiveCtx, isActiveCancel := context.WithTimeoutCause(ctx, constants.REDIS_TIMEOUT, errs.ErrRedisTimeout) + defer isActiveCancel() + isActive, err := a.Stores.ActiveToken.IsActive(isActiveCtx, refreshToken) + if err != nil { + return utilities.Unauthorized() + } + + if !isActive { + return utilities.Unauthorized() + } + + blacklistRefreshTokenCtx, blacklistRefreshTokenCancel := context.WithTimeoutCause(ctx, constants.REDIS_TIMEOUT, errs.ErrRedisTimeout) + defer blacklistRefreshTokenCancel() + if err := blacklist(blacklistRefreshTokenCtx, a, &refreshToken); err != nil { + return utilities.Unauthorized() + } + + deleteRefreshTokenCtx, deleteRefreshTokenCancel := context.WithTimeoutCause(ctx, constants.REDIS_TIMEOUT, errs.ErrRedisTimeout) + defer deleteRefreshTokenCancel() + if err := a.Stores.ActiveToken.DeleteRefreshToken(deleteRefreshTokenCtx, refreshToken); err != nil { + return err + } + + return nil +} + +func blacklist(ctx context.Context, a *AuthService, token *string) error { + claims, err := a.JWT.ExtractClaims(*token, auth.AccessToken) + if err != nil { + return err + } else { + exp, ok := claims["exp"].(float64) + if ok { + _ = a.Stores.Blacklist.BlacklistToken(ctx, *token, time.Until(time.Unix(int64(exp), 0))) + } + } return nil } diff --git a/backend/entities/auth/models.go b/backend/entities/auth/models.go index dc65fbb76..0c7415a07 100644 --- a/backend/entities/auth/models.go +++ b/backend/entities/auth/models.go @@ -9,7 +9,3 @@ type UpdatePasswordRequestBody struct { OldPassword string `json:"old_password" validate:"required"` // MARK: must be validated manually NewPassword string `json:"new_password" validate:"required,not_equal_if_not_empty=OldPassword"` // MARK: must be validated manually } - -type RefreshTokenRequestBody struct { - RefreshToken string `json:"refresh_token" validate:"required"` -} diff --git a/backend/errs/redis.go b/backend/errs/redis.go new file mode 100644 index 000000000..2223823c0 --- /dev/null +++ b/backend/errs/redis.go @@ -0,0 +1,5 @@ +package errs + +import "errors" + +var ErrRedisTimeout = errors.New("redis timeout") diff --git a/backend/go.mod b/backend/go.mod index 2e4146a5a..013d87529 100644 --- a/backend/go.mod +++ b/backend/go.mod @@ -18,11 +18,13 @@ require ( github.com/huandu/go-assert v1.1.6 github.com/joho/godotenv v1.5.1 github.com/mcnijman/go-emailaddress v1.1.1 + github.com/redis/go-redis/v9 v9.5.1 github.com/resend/resend-go/v2 v2.6.0 github.com/sahilm/fuzzy v0.1.1 github.com/spf13/viper v1.18.2 github.com/swaggo/swag v1.16.3 go.opentelemetry.io/otel/sdk v1.27.0 + go.opentelemetry.io/otel/trace v1.27.0 golang.org/x/crypto v0.23.0 golang.org/x/text v0.15.0 gorm.io/driver/postgres v1.5.7 @@ -41,6 +43,8 @@ require ( ) require ( + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect @@ -50,7 +54,6 @@ require ( github.com/mitchellh/mapstructure v1.5.0 // indirect go.opentelemetry.io/contrib v1.17.0 // indirect go.opentelemetry.io/otel/metric v1.27.0 // indirect - go.opentelemetry.io/otel/trace v1.27.0 // indirect go.uber.org/atomic v1.11.0 // indirect ) diff --git a/backend/go.sum b/backend/go.sum index 5319c6380..b0981411c 100644 --- a/backend/go.sum +++ b/backend/go.sum @@ -16,10 +16,18 @@ github.com/awnumar/memguard v0.22.5 h1:PH7sbUVERS5DdXh3+mLo8FDcl1eIeVjJVYMnyuYpv github.com/awnumar/memguard v0.22.5/go.mod h1:+APmZGThMBWjnMlKiSM1X7MVpbIVewen2MTkqWkA/zE= github.com/aws/aws-sdk-go v1.53.8 h1:eoqGb1WOHIrCFKo1d51cMcnt1ralfLFaEqRkC5Zzv8k= github.com/aws/aws-sdk-go v1.53.8/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= +github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= +github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= +github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= +github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/dhui/dktest v0.4.1 h1:/w+IWuDXVymg3IrRJCHHOkMK10m9aNVMOyD0X12YVTg= github.com/dhui/dktest v0.4.1/go.mod h1:DdOqcUpL7vgyP4GlF3X3w7HbSlz8cEQzwewPveYEQbA= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= @@ -164,6 +172,8 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/redis/go-redis/v9 v9.5.1 h1:H1X4D3yHPaYrkL5X06Wh6xNVM/pX0Ft4RV0vMGvLBh8= +github.com/redis/go-redis/v9 v9.5.1/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M= github.com/resend/resend-go/v2 v2.6.0 h1:bHwF79iCYC3V9H7/DL0MAIoz0hiAqM+Rq9G4EhgooyE= github.com/resend/resend-go/v2 v2.6.0/go.mod h1:ihnxc7wPpSgans8RV8d8dIF4hYWVsqMK5KxXAr9LIos= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= diff --git a/backend/main.go b/backend/main.go index f420ec916..57ddcf942 100644 --- a/backend/main.go +++ b/backend/main.go @@ -6,11 +6,11 @@ import ( "fmt" "log/slog" "net" - "os" "path/filepath" "github.com/GenerateNU/sac/backend/config" "github.com/GenerateNU/sac/backend/database" + "github.com/GenerateNU/sac/backend/database/store" _ "github.com/GenerateNU/sac/backend/docs" "github.com/GenerateNU/sac/backend/integrations" "github.com/GenerateNU/sac/backend/integrations/email" @@ -20,6 +20,7 @@ import ( "github.com/GenerateNU/sac/backend/server" "github.com/GenerateNU/sac/backend/telemetry" "github.com/GenerateNU/sac/backend/tests/api/mocks" + "github.com/GenerateNU/sac/backend/utilities" ) func main() { @@ -33,17 +34,17 @@ func main() { config, err := config.GetConfiguration(*configPath, *useDevDotEnv) if err != nil { - exit("Error getting configuration: %s", err.Error()) + utilities.Exit("Error getting configuration: %s", err.Error()) } err = checkServerRunning(config.Application.Host, config.Application.Port) if err == nil { - exit("A server is already running on %s:%d.\n", config.Application.Host, config.Application.Port) + utilities.Exit("A server is already running on %s:%d.\n", config.Application.Host, config.Application.Port) } db, err := database.ConfigureDB(*config) if err != nil { - exit("Error migrating database: %s", err.Error()) + utilities.Exit("Error migrating database: %s", err.Error()) } if *onlyMigrate { @@ -56,16 +57,18 @@ func main() { err := pinecone.Seed(db) if err != nil { - exit("Error seeding PineconeDB: %s\n", err.Error()) + utilities.Exit("Error seeding PineconeDB: %s\n", err.Error()) } return } err = database.ConnPooling(db) if err != nil { - exit("Error with connection pooling: %s", err.Error()) + utilities.Exit("Error with connection pooling: %s", err.Error()) } + stores := store.ConfigureRedis(*config) + integrations := configureIntegrations(config, *connectToPinecone) tp := telemetry.InitTracer() @@ -78,11 +81,11 @@ func main() { } }() - app := server.Init(db, integrations, *config) + app := server.Init(db, stores, integrations, *config) err = app.Listen(fmt.Sprintf("%s:%d", config.Application.Host, config.Application.Port)) if err != nil { - exit("Error starting server: %s", err.Error()) + utilities.Exit("Error starting server: %s", err.Error()) } } @@ -96,11 +99,6 @@ func checkServerRunning(host string, port uint16) error { return nil } -func exit(format string, a ...interface{}) { - fmt.Fprintf(os.Stderr, format, a...) - os.Exit(0) -} - func configureIntegrations(config *config.Settings, connectToPinecone bool) integrations.Integrations { openAi := search.NewOpenAIClient(config.OpenAI) var pinecone search.SearchClientInterface @@ -131,5 +129,6 @@ func configureIntegrations(config *config.Settings, connectToPinecone bool) inte Search: pinecone, OAuth: oauthResources, } + return integrations } diff --git a/backend/middleware/auth/auth.go b/backend/middleware/auth/auth.go index eb950b3be..99be76f45 100644 --- a/backend/middleware/auth/auth.go +++ b/backend/middleware/auth/auth.go @@ -1,11 +1,14 @@ package auth import ( + "context" "fmt" "slices" "strings" "github.com/GenerateNU/sac/backend/auth" + "github.com/GenerateNU/sac/backend/constants" + "github.com/GenerateNU/sac/backend/errs" "github.com/GenerateNU/sac/backend/locals" "github.com/GenerateNU/sac/backend/utilities" "github.com/google/uuid" @@ -64,9 +67,16 @@ func (m *AuthMiddlewareService) Authenticate(c *fiber.Ctx) error { return utilities.Unauthorized() } - // if auth.IsBlacklisted(*accessToken) { - // return errors.Unauthorized.FiberError(c) - // } + blacklistCtx, blacklistCancel := context.WithTimeoutCause(c.UserContext(), constants.REDIS_TIMEOUT, errs.ErrRedisTimeout) + defer blacklistCancel() + isBlacklisted, err := m.Stores.Blacklist.IsTokenBlacklisted(blacklistCtx, *accessToken) + if err != nil { + return utilities.InternalServerError() + } + + if isBlacklisted { + return utilities.Unauthorized() + } locals.SetCustomClaims(c, claims) diff --git a/backend/middleware/auth/middleware.go b/backend/middleware/auth/middleware.go index 97b3cafa5..22045ac85 100644 --- a/backend/middleware/auth/middleware.go +++ b/backend/middleware/auth/middleware.go @@ -3,6 +3,7 @@ package auth import ( "github.com/GenerateNU/sac/backend/auth" "github.com/GenerateNU/sac/backend/config" + "github.com/GenerateNU/sac/backend/database/store" "github.com/go-playground/validator/v10" "github.com/gofiber/fiber/v2" "gorm.io/gorm" @@ -20,12 +21,14 @@ type AuthMiddlewareService struct { DB *gorm.DB Validate *validator.Validate Auth config.AuthSettings + Stores *store.Stores } -func New(db *gorm.DB, validate *validator.Validate, authSettings config.AuthSettings) *AuthMiddlewareService { +func New(db *gorm.DB, validate *validator.Validate, authSettings config.AuthSettings, stores *store.Stores) *AuthMiddlewareService { return &AuthMiddlewareService{ DB: db, Validate: validate, Auth: authSettings, + Stores: stores, } } diff --git a/backend/middleware/utility/limiter.go b/backend/middleware/utility/limiter.go index 6f08befdf..39d29bf30 100644 --- a/backend/middleware/utility/limiter.go +++ b/backend/middleware/utility/limiter.go @@ -21,5 +21,6 @@ func (u *UtilityMiddlewareService) Limiter(rate int, expiration time.Duration) f LimitReached: func(c *fiber.Ctx) error { return utilities.NewAPIError(http.StatusTooManyRequests, errors.New("too many requests")) }, + Storage: u.Stores.Limiter, }) } diff --git a/backend/middleware/utility/middleware.go b/backend/middleware/utility/middleware.go index cd940ea93..2f582e913 100644 --- a/backend/middleware/utility/middleware.go +++ b/backend/middleware/utility/middleware.go @@ -3,6 +3,7 @@ package utility import ( "time" + "github.com/GenerateNU/sac/backend/database/store" "github.com/gofiber/fiber/v2" ) @@ -13,10 +14,12 @@ type UtilityMiddlewareInterface interface { type UtilityMiddlewareService struct { paginator fiber.Handler + Stores *store.Stores } -func New(paginator fiber.Handler) *UtilityMiddlewareService { +func New(paginator fiber.Handler, stores *store.Stores) *UtilityMiddlewareService { return &UtilityMiddlewareService{ paginator: paginator, + Stores: stores, } } diff --git a/backend/server/server.go b/backend/server/server.go index 0a4fd9f29..3178afc45 100644 --- a/backend/server/server.go +++ b/backend/server/server.go @@ -8,6 +8,8 @@ import ( authenticator "github.com/GenerateNU/sac/backend/auth" "github.com/GenerateNU/sac/backend/config" + "github.com/GenerateNU/sac/backend/database/store" + auth "github.com/GenerateNU/sac/backend/entities/auth/base" categories "github.com/GenerateNU/sac/backend/entities/categories/base" clubs "github.com/GenerateNU/sac/backend/entities/clubs/base" @@ -44,7 +46,7 @@ import ( // @host 127.0.0.1:8080 // @BasePath / // @schemes http -func Init(db *gorm.DB, integrations integrations.Integrations, settings config.Settings) *fiber.App { +func Init(db *gorm.DB, stores *store.Stores, integrations integrations.Integrations, settings config.Settings) *fiber.App { app := newFiberApp(settings.Application) validate, err := utilities.RegisterCustomValidators() @@ -53,8 +55,8 @@ func Init(db *gorm.DB, integrations integrations.Integrations, settings config.S } jwt := authenticator.NewJWTClient(settings.Auth, jwt.SigningMethodHS256) - authMiddleware := authMiddleware.New(db, validate, settings.Auth) - utilityMiddleware := utilityMiddleware.New(fiberpaginate.New()) + authMiddleware := authMiddleware.New(db, validate, settings.Auth, stores) + utilityMiddleware := utilityMiddleware.New(fiberpaginate.New(), stores) apiv1 := app.Group("/api/v1") @@ -68,6 +70,7 @@ func Init(db *gorm.DB, integrations integrations.Integrations, settings config.S &settings.Auth, jwt, &settings.Calendar, + stores, integrations, ), ) diff --git a/backend/tests/api/helpers/app.go b/backend/tests/api/helpers/app.go index 755c1be79..ce529b6b8 100644 --- a/backend/tests/api/helpers/app.go +++ b/backend/tests/api/helpers/app.go @@ -38,8 +38,10 @@ func spawnApp() (*TestApp, error) { return nil, err } + stores := ConfigureRedisMock() + return &TestApp{ - App: server.Init(connectionWithDB, *NewMockDependencies(), *configuration), + App: server.Init(connectionWithDB, stores, *NewMockDependencies(), *configuration), Address: fmt.Sprintf("http://%s", listener.Addr().String()), Conn: connectionWithDB, Settings: *configuration, diff --git a/backend/tests/api/helpers/redis.go b/backend/tests/api/helpers/redis.go new file mode 100644 index 000000000..581b00ff3 --- /dev/null +++ b/backend/tests/api/helpers/redis.go @@ -0,0 +1,30 @@ +package helpers + +import ( + "github.com/GenerateNU/sac/backend/database/store" + "github.com/GenerateNU/sac/backend/tests/api/mocks" +) + +type StoresMock struct { + Limiter store.LimiterInterface + Blacklist store.BlacklistInterface + ActiveToken store.ActiveTokenInterface +} + +func NewStoresMock(limiter store.LimiterInterface, blacklist store.BlacklistInterface, activeToken store.ActiveTokenInterface) *store.Stores { + return &store.Stores{ + Limiter: limiter, + Blacklist: blacklist, + ActiveToken: activeToken, + } +} + +func ConfigureRedisMock() *store.Stores { + limiter := mocks.NewLimiterMock(mocks.NewRedisMockClient()) + blacklist := mocks.NewBlacklistMock(mocks.NewRedisMockClient()) + activeToken := mocks.NewActiveTokenMock(mocks.NewRedisMockClient()) + + stores := NewStoresMock(limiter, blacklist, activeToken) + + return stores +} diff --git a/backend/tests/api/mocks/redis_mock.go b/backend/tests/api/mocks/redis_mock.go new file mode 100644 index 000000000..db10d70fd --- /dev/null +++ b/backend/tests/api/mocks/redis_mock.go @@ -0,0 +1,124 @@ +package mocks + +import ( + "context" + "time" + + "github.com/GenerateNU/sac/backend/database/store" +) + +// RedisMockClient implements StoreClientInterface +type RedisMockClient struct{} + +func NewRedisMockClient() *RedisMockClient { + return &RedisMockClient{} +} + +func (r *RedisMockClient) Set(ctx context.Context, key string, value interface{}, expiration time.Duration) error { + return nil +} + +func (r *RedisMockClient) Get(ctx context.Context, key string) (string, error) { + return "", nil +} + +func (r *RedisMockClient) Del(ctx context.Context, key string) error { + return nil +} + +func (r *RedisMockClient) Exists(ctx context.Context, key string) (bool, error) { + return false, nil +} + +func (r *RedisMockClient) SetAdd(ctx context.Context, key string, members ...interface{}) error { + return nil +} + +func (r *RedisMockClient) SetIsMember(ctx context.Context, key string, member interface{}) (bool, error) { + return false, nil +} + +func (r *RedisMockClient) FlushAll(ctx context.Context) error { + return nil +} + +func (r *RedisMockClient) Close(ctx context.Context) error { + return nil +} + +// ActiveTokenMock implements ActiveTokenInterface +type ActiveTokenMock struct { + StoreClient store.StoreClientInterface +} + +func NewActiveTokenMock(storeClient store.StoreClientInterface) *ActiveTokenMock { + return &ActiveTokenMock{ + StoreClient: storeClient, + } +} + +func (a *ActiveTokenMock) StoreRefreshToken(ctx context.Context, token string, userID string, expiry time.Duration) error { + return nil +} + +func (a *ActiveTokenMock) GetRefreshToken(ctx context.Context, token string) (string, error) { + return "", nil +} + +func (a *ActiveTokenMock) IsActive(ctx context.Context, token string) (bool, error) { + return false, nil +} + +func (a *ActiveTokenMock) DeleteRefreshToken(ctx context.Context, token string) error { + return nil +} + +// BlacklistMock implements BlacklistInterface +type BlacklistMock struct { + StoreClient store.StoreClientInterface +} + +func NewBlacklistMock(storeClient store.StoreClientInterface) *BlacklistMock { + return &BlacklistMock{ + StoreClient: storeClient, + } +} + +func (b *BlacklistMock) BlacklistToken(ctx context.Context, token string, expiry time.Duration) error { + return nil +} + +func (b *BlacklistMock) IsTokenBlacklisted(ctx context.Context, token string) (bool, error) { + return false, nil +} + +// LimiterMock implements LimiterInterface +type LimiterMock struct { + StoreClient store.StoreClientInterface +} + +func NewLimiterMock(storeClient store.StoreClientInterface) *LimiterMock { + return &LimiterMock{ + StoreClient: storeClient, + } +} + +func (l *LimiterMock) Get(key string) ([]byte, error) { + return nil, nil +} + +func (l *LimiterMock) Set(key string, val []byte, exp time.Duration) error { + return nil +} + +func (l *LimiterMock) Delete(key string) error { + return nil +} + +func (l *LimiterMock) Reset() error { + return nil +} + +func (l *LimiterMock) Close() error { + return nil +} diff --git a/backend/types/params.go b/backend/types/params.go index 47a65a348..750c3f86d 100644 --- a/backend/types/params.go +++ b/backend/types/params.go @@ -3,6 +3,7 @@ package types import ( "github.com/GenerateNU/sac/backend/auth" "github.com/GenerateNU/sac/backend/config" + "github.com/GenerateNU/sac/backend/database/store" "github.com/GenerateNU/sac/backend/integrations" authMiddleware "github.com/GenerateNU/sac/backend/middleware/auth" utilityMiddleware "github.com/GenerateNU/sac/backend/middleware/utility" @@ -33,16 +34,18 @@ type ServiceParams struct { Auth *config.AuthSettings JWT auth.JWTClientInterface Calendar *config.CalendarSettings + Stores *store.Stores Integrations integrations.Integrations } -func NewServiceParams(db *gorm.DB, validate *validator.Validate, auth *config.AuthSettings, jwt auth.JWTClientInterface, calendar *config.CalendarSettings, integrations integrations.Integrations) ServiceParams { +func NewServiceParams(db *gorm.DB, validate *validator.Validate, auth *config.AuthSettings, jwt auth.JWTClientInterface, calendar *config.CalendarSettings, stores *store.Stores, integrations integrations.Integrations) ServiceParams { return ServiceParams{ DB: db, Validate: validate, Auth: auth, JWT: jwt, Calendar: calendar, + Stores: stores, Integrations: integrations, } } diff --git a/backend/utilities/exit.go b/backend/utilities/exit.go new file mode 100644 index 000000000..71defedf1 --- /dev/null +++ b/backend/utilities/exit.go @@ -0,0 +1,11 @@ +package utilities + +import ( + "fmt" + "os" +) + +func Exit(format string, a ...interface{}) { + fmt.Fprintf(os.Stderr, format, a...) + os.Exit(0) +} diff --git a/backend/utilities/manipulator.go b/backend/utilities/manipulator.go index 9d37e0764..b1b36bf38 100644 --- a/backend/utilities/manipulator.go +++ b/backend/utilities/manipulator.go @@ -34,3 +34,12 @@ func MapJsonTags[From any, Into any](from From, intoType *Into) (*Into, error) { func NormalizeEmail(email string) string { return strings.ToLower(email) } + +func SplitBearerToken(accessToken string) (*string, error) { + token := strings.Split(accessToken, "Bearer ") + if len(token) != 2 { + return nil, fmt.Errorf("invalid token") + } + + return &token[1], nil +} diff --git a/cli/cmd/redis.go b/cli/cmd/redis.go new file mode 100644 index 000000000..ca78e9eec --- /dev/null +++ b/cli/cmd/redis.go @@ -0,0 +1,61 @@ +package cmd + +import ( + "fmt" + "os" + + "github.com/GenerateNU/sac/cli/helpers" + "github.com/spf13/cobra" +) + +var redisCmd = &cobra.Command{ + Use: "redis", + Aliases: []string{"redis"}, + Short: "Redis management commands", +} + +func init() { + rootCmd.AddCommand(redisCmd) + redisCmd.AddCommand(redisInitCmd) + redisCmd.AddCommand(redisDownCmd) + redisCmd.AddCommand(redisRestartCmd) +} + +var redisInitCmd = &cobra.Command{ + Use: "up", + Short: "Start the Redis container(s)", + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.UpRedis() + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var redisDownCmd = &cobra.Command{ + Use: "down", + Short: "Stop the Redis container(s)", + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.DownRedis() + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var redisRestartCmd = &cobra.Command{ + Use: "restart", + Short: "Restart the Redis container(s)", + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.RestartRedis() + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} diff --git a/cli/go.sum b/cli/go.sum index b1cae943d..457707513 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -1,92 +1,37 @@ github.com/GenerateNU/sac/backend v0.0.0-20240427140745-74eb4ec0f597 h1:bhattf8C4aGIdJ+0L168MztGMKcznF0ZiEDhvLlHMEU= -github.com/GenerateNU/sac/backend v0.0.0-20240427140745-74eb4ec0f597/go.mod h1:VEuNTR6WQ0OQ5fjMjoRcIymCMjRLdRUM611roK9yQYQ= github.com/awnumar/memcall v0.2.0 h1:sRaogqExTOOkkNwO9pzJsL8jrOV29UuUW7teRMfbqtI= -github.com/awnumar/memcall v0.2.0/go.mod h1:S911igBPR9CThzd/hYQQmTc9SWNu3ZHIlCGaWsWsoJo= github.com/awnumar/memguard v0.22.5 h1:PH7sbUVERS5DdXh3+mLo8FDcl1eIeVjJVYMnyuYpvuI= -github.com/awnumar/memguard v0.22.5/go.mod h1:+APmZGThMBWjnMlKiSM1X7MVpbIVewen2MTkqWkA/zE= -github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= -github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= -github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/garrettladley/mattress v0.4.0 h1:ZB3iqyc5q6bqIryNfsh2FMcbMdnV1XEryvqivouceQE= -github.com/garrettladley/mattress v0.4.0/go.mod h1:OWKIRc9wC3gtD3Ng/nUuNEiR1TJvRYLmn/KZYw9nl5Q= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= -github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= -github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= -github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/pelletier/go-toml/v2 v2.2.0 h1:QLgLl2yMN7N+ruc31VynXs1vhMZa7CeHHejIeBAsoHo= -github.com/pelletier/go-toml/v2 v2.2.0/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= -github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= -github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= -github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= -github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= -github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= -github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= -github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= -github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= -go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 h1:985EYyeCOxTpcgOTJpflJUwOeEz0CQOdPt73OzpE9F8= -golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= -gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/cli/helpers/backend.go b/cli/helpers/backend.go index 498042e83..34cbf1eb8 100644 --- a/cli/helpers/backend.go +++ b/cli/helpers/backend.go @@ -11,6 +11,11 @@ func RunBackend() error { return fmt.Errorf("error initializing database: %w", err) } + err = UpRedis() + if err != nil { + return fmt.Errorf("error initializing redis: %w", err) + } + err = Execute(exec.Command("go", "run", "main.go"), BACKEND_DIR) if err != nil { return fmt.Errorf("error running backend: %w", err) diff --git a/cli/helpers/redis.go b/cli/helpers/redis.go new file mode 100644 index 000000000..5b4af4006 --- /dev/null +++ b/cli/helpers/redis.go @@ -0,0 +1,33 @@ +package helpers + +import ( + "fmt" + "os/exec" +) + +func UpRedis() error { + err := Execute(exec.Command("docker-compose", "up", "-d"), BACKEND_DIR) + if err != nil { + return fmt.Errorf("error initializing redis: %w", err) + } + + return nil +} + +func DownRedis() error { + err := Execute(exec.Command("docker-compose", "down"), BACKEND_DIR) + if err != nil { + return fmt.Errorf("error stopping redis: %w", err) + } + + return nil +} + +func RestartRedis() error { + err := Execute(exec.Command("docker-compose", "restart"), BACKEND_DIR) + if err != nil { + return fmt.Errorf("error restarting redis: %w", err) + } + + return nil +} diff --git a/config/local.yml b/config/local.yml index 2b1afe5fa..54a93ac0e 100644 --- a/config/local.yml +++ b/config/local.yml @@ -16,3 +16,19 @@ auth: refreshkey: amk*2!gG}1i"8D9RwJS$p calendar: maxterminationdate: 12-31-2024 +redis: + - username: redis_active_tokens + host: 127.0.0.1 + port: 6379 + password: redis_active_token!#1 + db: 0 + - username: redis_blacklist + host: 127.0.0.1 + port: 6380 + password: redis_blacklist!#2 + db: 0 + - username: redis_limiter + host: 127.0.0.1 + port: 6381 + password: redis_limiter!#3 + db: 0 diff --git a/go.work.sum b/go.work.sum index 69986c7fb..a07a013cf 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1,3 +1,4 @@ +cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= cloud.google.com/go v0.110.10 h1:LXy9GEO+timppncPIAZoOj3l58LIU9k+kn48AN7IO3Y= @@ -33,6 +34,11 @@ cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiV cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/firestore v1.14.0/go.mod h1:96MVaHLsEhbvkBEdZgfN+AS/GIkco1LRpH9Xp9YZfzQ= +cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= +cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI= +cloud.google.com/go/spanner v1.51.0/go.mod h1:c5KNo5LQ1X5tJwma9rSQZsXNBDNvj4/n8BVc3LNahq0= +cloud.google.com/go/storage v1.35.1/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= cloud.google.com/go/contactcenterinsights v1.11.3/go.mod h1:HHX5wrz5LHVAwfI2smIotQG9x8Qd6gYilaHcLLLmNis= cloud.google.com/go/container v1.27.1/go.mod h1:b1A1gJeTBXVLQ6GGw9/9M4FG94BEGsqJ5+t4d/3N7O4= cloud.google.com/go/containeranalysis v0.11.3/go.mod h1:kMeST7yWFQMGjiG9K7Eov+fPNQcGhb8mXj/UcTiWw9U= @@ -145,6 +151,7 @@ github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2 h1:+5VZ72z0Qan5Bog5C+ZkgSq github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0 h1:u/LLAOFgsMv7HmNL4Qufg58y+qElGOt5qv0z1mURkRY= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0/go.mod h1:2e8rMJtl2+2j+HXbTBwnyGpm5Nou7KhvSfxOq8JpTag= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest/adal v0.9.16 h1:P8An8Z9rH1ldbOLdFpxYorgOt2sywL9V24dAwWHPuGc= @@ -155,14 +162,16 @@ github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+Z github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= +github.com/ClickHouse/clickhouse-go v1.4.3/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= +github.com/GenerateNU/sac/backend v0.0.0-20240427140745-74eb4ec0f597/go.mod h1:VEuNTR6WQ0OQ5fjMjoRcIymCMjRLdRUM611roK9yQYQ= +github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/ClickHouse/clickhouse-go v1.4.3 h1:iAFMa2UrQdR5bHJ2/yaSLffZkxpcOYQMCUuKeNXGdqc= github.com/ClickHouse/clickhouse-go v1.4.3/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= github.com/PuerkitoBio/goquery v1.8.1 h1:uQxhNlArOIdbrH1tr0UXwdVFgDcZDrZVdcpygAcwmWM= github.com/PuerkitoBio/goquery v1.8.1/go.mod h1:Q8ICL1kNUJ2sXGoAhPGUdYDJvgQgHzJsnnd3H7Ho5jQ= -github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/a-h/htmlformat v0.0.0-20231108124658-5bd994fe268e h1:Eog54DQpku7NpPNff9wzQYT61TGu9jjq5N8UhAkqIgw= github.com/a-h/htmlformat v0.0.0-20231108124658-5bd994fe268e/go.mod h1:FMIm5afKmEfarNbIXOaPHFY8X7fo+fRQB6I9MPG2nB0= @@ -172,8 +181,10 @@ github.com/a-h/pathvars v0.0.14 h1:5/C0U5zuUtvAfVQCR5vow4E4MIRU7QIOLz8z26EeeQw= github.com/a-h/pathvars v0.0.14/go.mod h1:7rLTtvDVyKneR/N65hC0lh2sZ2KRyAmWFaOvv00uxb0= github.com/a-h/protocol v0.0.0-20230224160810-b4eec67c1c22 h1:ehNdbGOAR8KTrLY/S90/9RJ4p/cgeNdt1sRt0DSiRWs= github.com/a-h/protocol v0.0.0-20230224160810-b4eec67c1c22/go.mod h1:Gm0KywveHnkiIhqFSMZglXwWZRQICg3KDWLYdglv/d8= -github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY= +github.com/a-h/templ v0.2.697/go.mod h1:5cqsugkq9IerRNucNsI4DEamdHPsoGMQy99DzydLhM8= github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c= github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= github.com/apache/arrow/go/v10 v10.0.1 h1:n9dERvixoC/1JjDmBcs9FPaEryoANa2sCgVFo6ez9cI= @@ -183,6 +194,9 @@ github.com/apache/thrift v0.16.0 h1:qEy6UW60iVOlUy+b9ZR0d5WzUWYGOo4HfopoyBaNmoY= github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= +github.com/awnumar/memcall v0.2.0/go.mod h1:S911igBPR9CThzd/hYQQmTc9SWNu3ZHIlCGaWsWsoJo= +github.com/awnumar/memguard v0.22.5/go.mod h1:+APmZGThMBWjnMlKiSM1X7MVpbIVewen2MTkqWkA/zE= +github.com/aws/aws-sdk-go v1.51.30/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= github.com/aws/aws-sdk-go v1.50.5 h1:H2Aadcgwr7a2aqS6ZwcE+l1mA6ZrTseYCvjw2QLmxIA= github.com/aws/aws-sdk-go v1.50.5/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= github.com/aws/aws-sdk-go-v2 v1.16.16 h1:M1fj4FE2lB4NzRb9Y0xdWsn2P0+2UHVxwKyOa4YJNjk= @@ -211,13 +225,14 @@ github.com/aws/aws-sdk-go-v2/service/s3 v1.27.11 h1:3/gm/JTX9bX8CpzTgIlrtYpB3EVB github.com/aws/aws-sdk-go-v2/service/s3 v1.27.11/go.mod h1:fmgDANqTUCxciViKl9hb/zD5LFbvPINFRgWhDbR+vZo= github.com/aws/smithy-go v1.13.3 h1:l7LYxGuzK6/K+NzJ2mC+VvLUbae0sL3bXU//04MkmnA= github.com/aws/smithy-go v1.13.3/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= +github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= +github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= -github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cli/browser v1.3.0 h1:LejqCrpWr+1pRqmEPDGnTZOjsMe7sehifLynZJuqJpo= github.com/cli/browser v1.3.0/go.mod h1:HH8s+fOAxjhQoBUAsKuPCbqUuxZDhQ2/aD+SzsEfBTk= @@ -234,12 +249,22 @@ github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmf github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cznic/mathutil v0.0.0-20180504122225-ca4c9f2c1369 h1:XNT/Zf5l++1Pyg08/HV04ppB0gKxAqtZQBRYiYrUuYk= github.com/cznic/mathutil v0.0.0-20180504122225-ca4c9f2c1369/go.mod h1:e6NPNENfs9mPDVNRekM7lKScauxd5kXTr1Mfyig6TDM= github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= +github.com/dhui/dktest v0.4.1/go.mod h1:DdOqcUpL7vgyP4GlF3X3w7HbSlz8cEQzwewPveYEQbA= +github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v24.0.9+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= @@ -254,6 +279,23 @@ github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/form3tech-oss/jwt-go v3.2.5+incompatible h1:/l4kBbb4/vGSsdtB5nUe8L7B9mImVMaBPw9L/0TBHU8= github.com/form3tech-oss/jwt-go v3.2.5+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/fsouza/fake-gcs-server v1.17.0/go.mod h1:D1rTE4YCyHFNa99oyJJ5HyclvN/0uQR+pM/VdlL83bw= +github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= +github.com/garrettladley/fiberpaginate v1.0.5/go.mod h1:MHVWGQkhtnt2kE8F0wkTF5iUQOyqZlRktfcGgBLRBv0= +github.com/garrettladley/mattress v0.4.0/go.mod h1:OWKIRc9wC3gtD3Ng/nUuNEiR1TJvRYLmn/KZYw9nl5Q= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= +github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= +github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.20.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= github.com/fsouza/fake-gcs-server v1.17.0 h1:OeH75kBZcZa3ZE+zz/mFdJ2btt9FgqfjI7gIh9+5fvk= github.com/fsouza/fake-gcs-server v1.17.0/go.mod h1:D1rTE4YCyHFNa99oyJJ5HyclvN/0uQR+pM/VdlL83bw= github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= @@ -262,12 +304,22 @@ github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gG github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/gobuffalo/here v0.6.0/go.mod h1:wAG085dHOYqUpf+Ap+WOdrPTp5IYcDAs/x7PLa8Y5fM= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/gobuffalo/here v0.6.0 h1:hYrd0a6gDmWxBM4TnrGw8mQg24iSVoIkHEk7FodQcBI= github.com/gobuffalo/here v0.6.0/go.mod h1:wAG085dHOYqUpf+Ap+WOdrPTp5IYcDAs/x7PLa8Y5fM= github.com/gocql/gocql v0.0.0-20210515062232-b7ef815b4556 h1:N/MD/sr6o61X+iZBAT2qEUF023s4KbA8RWfKzl0L6MQ= github.com/gocql/gocql v0.0.0-20210515062232-b7ef815b4556/go.mod h1:DL0ekTmBSTdlNF25Orwt/JMzqIq3EJ4MVa/J/uK64OY= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/gofiber/contrib/otelfiber v1.0.10/go.mod h1:jN6AvS1HolDHTQHFURsV+7jSX96FpXYeKH6nmkq8AIw= +github.com/gofiber/fiber/v2 v2.52.4/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ= +github.com/gofiber/swagger v1.0.0/go.mod h1:QrYNF1Yrc7ggGK6ATsJ6yfH/8Zi5bu9lA7wB8TmCecg= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-migrate/migrate/v4 v4.17.1/go.mod h1:m8hinFyWBn0SA4QKHuKh175Pm9wjmxj3S2Mia7dbXzM= github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs= github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= @@ -281,6 +333,12 @@ github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-github/v39 v39.2.0/go.mod h1:C1s8C5aCC9L+JXIYpJM5GYytdX52vC1bLvHEF1IhBrE= +github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/flatbuffers v2.0.8+incompatible h1:ivUb1cGomAB101ZM1T0nOiWz9pSrTMoa9+EiY7igmkM= github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= @@ -303,10 +361,14 @@ github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56 github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/googleapis/google-cloud-go-testing v0.0.0-20210719221736-1c9a4c676720 h1:zC34cGQu69FG7qzJ3WiKW244WfhDC3xxYMeNOX2gtUQ= github.com/googleapis/google-cloud-go-testing v0.0.0-20210719221736-1c9a4c676720/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gopherjs/gopherjs v1.17.2/go.mod h1:pRRIvn/QzFLrKfvEz3qUuEhtE/zLCWfreZ6J5gM2i+k= github.com/gorilla/handlers v1.4.2 h1:0QniY0USkHQ1RGCLfKxeNHK9bkDHGRYGNDFBCS+YARg= github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc= github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= +github.com/h2non/gock v1.2.0/go.mod h1:tNhoxHYW2W42cYkYb1WqzdbYIieALC99kpYr7rH/BQk= +github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= @@ -315,6 +377,8 @@ github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed h1:5upAirOpQc github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= github.com/hashicorp/consul/api v1.25.1 h1:CqrdhYzc8XZuPnhIYZWH45toM0LB9ZeYr/gvpLVI3PE= github.com/hashicorp/consul/api v1.25.1/go.mod h1:iiLVwR/htV7mas/sy0O+XSuEnrdBUUydemjxcUrAt4g= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/consul/sdk v0.14.1/go.mod h1:vFt03juSzocLRFo59NkeQHHmQa6+g7oU0pfzdI1mUhg= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= @@ -322,6 +386,13 @@ github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+ github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= +github.com/huandu/go-assert v1.1.6/go.mod h1:JuIfbmYG9ykwvuxoJ3V8TB5QP+3+ajIA54Y44TmkMxs= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= @@ -341,14 +412,25 @@ github.com/jackc/pgerrcode v0.0.0-20220416144525-469b46aa5efa h1:s+4MhCQ6YrzisK6 github.com/jackc/pgerrcode v0.0.0-20220416144525-469b46aa5efa/go.mod h1:a/s9Lp5W7n/DD0VrVoyJ00FbP2ytTPDVOivvn2bMlds= github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE= github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgproto3/v2 v2.3.3/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgservicefile v0.0.0-20231201235250-de7065d80cb9/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= github.com/jackc/pgproto3/v2 v2.3.3 h1:1HLSx5H+tXR9pW3in3zaztoEwQYRC9SQaYUHjTSUOag= github.com/jackc/pgproto3/v2 v2.3.3/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgtype v1.14.0 h1:y+xUdabmyMkJLyApYuPj38mW+aAIqCe5uuBB51rH3Vw= github.com/jackc/pgtype v1.14.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= github.com/jackc/pgx/v4 v4.18.2 h1:xVpYkNR5pk5bMCZGfClbO962UIqVABcAGt7ha1s/FeU= github.com/jackc/pgx/v4 v4.18.2/go.mod h1:Ey4Oru5tH5sB6tV7hDmfWFahwF15Eb7DNXlRKx2CkVw= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/jackc/pgx/v5 v5.5.5/go.mod h1:ez9gk+OAat140fv9ErkZDYFWmXLfV+++K0uAOiwgm1A= +github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/k0kubun/pp v2.3.0+incompatible h1:EKhKbi34VQDWJtq+zpsKSEhkHHs9w2P8Izbq8IhLVSo= github.com/k0kubun/pp v2.3.0+incompatible/go.mod h1:GWse8YhT0p8pT4ir3ZgBbfZild3tgzSScAn6HmfYukg= github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA= @@ -357,11 +439,30 @@ github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNU github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= +github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/ktrysmt/go-bitbucket v0.6.4/go.mod h1:9u0v3hsd2rqCHRIpbir1oP7F58uo5dq19sBYvuMoyQ4= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/markbates/pkger v0.15.1/go.mod h1:0JoVlrol20BSywW79rN3kdFFsE5xYM+rSCQDXbLhiuI= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= +github.com/mcnijman/go-emailaddress v1.1.1/go.mod h1:5whZrhS8Xp5LxO8zOD35BC+b76kROtsh+dPomeRt/II= github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= github.com/ktrysmt/go-bitbucket v0.6.4 h1:C8dUGp0qkwncKtAnozHCbbqhptefzEd1I0sfnuy9rYQ= github.com/ktrysmt/go-bitbucket v0.6.4/go.mod h1:9u0v3hsd2rqCHRIpbir1oP7F58uo5dq19sBYvuMoyQ4= @@ -378,12 +479,14 @@ github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 h1:AMFGa4R4MiIpsp github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8DFdX7uMikMLXX4oubIzJF4kv/wI= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= github.com/mutecomm/go-sqlcipher/v4 v4.4.0 h1:sV1tWCWGAVlPhNGT95Q+z/txFxuhAYWwHD1afF5bMZg= @@ -398,6 +501,8 @@ github.com/nats-io/nkeys v0.4.6 h1:IzVe95ru2CT6ta874rt9saQRkWfe2nFj1NtvYSLqMzY= github.com/nats-io/nkeys v0.4.6/go.mod h1:4DxZNzenSVd1cYQoAa8948QY3QDjrHfcfVADymtkpts= github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= +github.com/neo4j/neo4j-go-driver v1.8.1-0.20200803113522-b626aa943eba/go.mod h1:ncO5VaFWh0Nrt+4KT4mOZboaczBZcLuHrG+/sUeP8gI= github.com/neo4j/neo4j-go-driver v1.8.1-0.20200803113522-b626aa943eba h1:fhFP5RliM2HW/8XdcO5QngSfFli9GcRIpMXvypTQt6E= github.com/neo4j/neo4j-go-driver v1.8.1-0.20200803113522-b626aa943eba/go.mod h1:ncO5VaFWh0Nrt+4KT4mOZboaczBZcLuHrG+/sUeP8gI= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= @@ -405,11 +510,25 @@ github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/gomega v1.15.0 h1:WjP/FQ/sk43MRmnEcT+MlDw2TFvkrXlprrPST/IudjU= github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/pelletier/go-toml/v2 v2.2.0/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= +github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0= github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= github.com/pierrec/lz4/v4 v4.1.16 h1:kQPfno+wyx6C5572ABwV+Uo3pDFzQ7yhyGchSyRda0c= github.com/pierrec/lz4/v4 v4.1.16/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/sftp v1.13.6/go.mod h1:tz1ryNURKu77RL+GuCzmoJYxQczL3wLNNpPWagdg4Qk= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/redis/go-redis/v9 v9.5.1/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/resend/resend-go/v2 v2.6.0/go.mod h1:ihnxc7wPpSgans8RV8d8dIF4hYWVsqMK5KxXAr9LIos= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/sftp v1.13.6 h1:JFZT4XbOU7l77xGSpOdW+pwIMqP044IyjXX6FGyEKFo= github.com/pkg/sftp v1.13.6/go.mod h1:tz1ryNURKu77RL+GuCzmoJYxQczL3wLNNpPWagdg4Qk= @@ -424,6 +543,11 @@ github.com/rqlite/gorqlite v0.0.0-20230708021416-2acd02b70b79 h1:V7x0hCAgL8lNGez github.com/rqlite/gorqlite v0.0.0-20230708021416-2acd02b70b79/go.mod h1:xF/KoXmrRyahPfo5L7Szb5cAAUl53dMWBh9cMruGEZg= github.com/rs/cors v1.11.0 h1:0B9GE/r9Bc2UxRMMtymBkHTenPkHDv0CW4Y98GBY+po= github.com/rs/cors v1.11.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sagikazarmark/crypt v0.17.0/go.mod h1:SMtHTvdmsZMuY/bpZoqokSoChIrcJ/epOxZN58PbZDg= +github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= +github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= +github.com/sahilm/fuzzy v0.1.1/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/sagikazarmark/crypt v0.17.0 h1:ZA/7pXyjkHoK4bW4mIdnCLvL8hd+Nrbiw7Dqk7D4qUk= github.com/sagikazarmark/crypt v0.17.0/go.mod h1:SMtHTvdmsZMuY/bpZoqokSoChIrcJ/epOxZN58PbZDg= @@ -437,6 +561,33 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5I github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.9.2 h1:oxx1eChJGI6Uks2ZC4W1zpLlVgqB8ner4EuQwV4Ik1Y= github.com/sirupsen/logrus v1.9.2/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/smarty/assertions v1.15.0/go.mod h1:yABtdzeQs6l1brC900WlRNwj6ZR55d7B+E8C6HtKdec= +github.com/smartystreets/goconvey v1.8.1/go.mod h1:+/u4qLyY6x1jReYOp7GOM2FSt8aP9CzCZL03bI28W60= +github.com/snowflakedb/gosnowflake v1.6.19/go.mod h1:FM1+PWUdwB9udFDsXdfD58NONC0m+MlOSmQRvimobSM= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/swaggo/files/v2 v2.0.0/go.mod h1:24kk2Y9NYEJ5lHuCra6iVwkMjIekMCaFq/0JQj66kyM= +github.com/swaggo/swag v1.16.3/go.mod h1:DImHIuOFXKpMFAQjcC7FG4m3Dg4+QuUgUzJmKjI/gRk= +github.com/tinylib/msgp v1.1.9/go.mod h1:BCXGB54lDD8qUEPmiG0cQQUANC4IUQyB2ItS2UDlO/k= +github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.52.0/go.mod h1:hf5C4QnVMkNXMspnsUlfM3WitlgYflyhHYoKol/szxQ= +github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= github.com/snowflakedb/gosnowflake v1.6.19 h1:KSHXrQ5o7uso25hNIzi/RObXtnSGkFgie91X82KcvMY= github.com/snowflakedb/gosnowflake v1.6.19/go.mod h1:FM1+PWUdwB9udFDsXdfD58NONC0m+MlOSmQRvimobSM= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= @@ -459,13 +610,11 @@ github.com/xdg-go/stringprep v1.0.3 h1:kdwGpVNwPFtjs98xCGkHjQtGKh86rDcRZN17QEMCO github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= -github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= gitlab.com/nyarla/go-crypt v0.0.0-20160106005555-d9a5dc2b789b h1:7gd+rd8P3bqcn/96gOZa3F5dpJr/vEiDQYlNb/y2uNs= gitlab.com/nyarla/go-crypt v0.0.0-20160106005555-d9a5dc2b789b/go.mod h1:T3BPAOm2cqquPa0MKWeNkmOM5RQsRhkrwMWonFMN7fE= -go.etcd.io/etcd/api/v3 v3.5.10 h1:szRajuUUbLyppkhs9K6BRtjY37l66XQQmw7oZRANE4k= go.etcd.io/etcd/api/v3 v3.5.10/go.mod h1:TidfmT4Uycad3NM/o25fG3J07odo4GBB9hoxaodFCtI= go.etcd.io/etcd/client/pkg/v3 v3.5.10 h1:kfYIdQftBnbAq8pUWFXfpuuxFSKzlmM5cSn76JByiT0= go.etcd.io/etcd/client/pkg/v3 v3.5.10/go.mod h1:DYivfIviIuQ8+/lCq4vcxuseg2P2XbHygkKwFo9fc8U= @@ -483,43 +632,35 @@ go.mongodb.org/mongo-driver v1.7.5 h1:ny3p0reEpgsR2cfA5cjgwFZg3Cv/ofFh/8jbhGtz9V go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/contrib v1.17.0/go.mod h1:gIzjwWFoGazJmtCaDgViqOSJPde2mCWzv60o0bWPcZs= +go.opentelemetry.io/contrib/propagators/b3 v1.17.0/go.mod h1:IkfUfMpKWmynvvE0264trz0sf32NRTZL4nuAN9AbWRc= +go.opentelemetry.io/otel v1.26.0/go.mod h1:UmLkJHUAidDval2EICqBMbnAd0/m2vmpf/dAM+fvFs4= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.26.0/go.mod h1:zVZ8nz+VSggWmnh6tTsJqXQ7rU4xLwRtna1M4x5jq58= +go.opentelemetry.io/otel/metric v1.26.0/go.mod h1:SY+rHOI4cEawI9a7N1A4nIg/nTQXe1ccCNWYOJUrpX4= +go.opentelemetry.io/otel/oteltest v1.0.0-RC3/go.mod h1:xpzajI9JBRr7gX63nO6kAmImmYIAtuQblZ36Z+LfCjE= +go.opentelemetry.io/otel/sdk v1.26.0/go.mod h1:0p8MXpqLeJ0pzcszQQN4F0S5FVjBLgypeGSngLsmirs= +go.opentelemetry.io/otel/sdk/metric v0.39.0/go.mod h1:piDIRgjcK7u0HCL5pCA4e74qpK/jk3NiUoAHATVAmiI= +go.opentelemetry.io/otel/trace v1.26.0/go.mod h1:4iDxvGDQuUkHve82hJJ8UqrwswHYsZuWCBllGV2U2y0= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= -golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= -golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= -golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= -golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= -golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= -golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= -golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= -golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= -golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= -golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= -golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20180911220305-26e67e76b6c3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= @@ -556,21 +697,9 @@ golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= -golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= -golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= +golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI= @@ -580,6 +709,13 @@ google.golang.org/api v0.153.0 h1:N1AwGhielyKFaUqH07/ZSIQR3uNPcV7NVw0vj+j4iR4= google.golang.org/api v0.153.0/go.mod h1:3qNJX5eOmhiWYc67jRA/3GsDw97UFb5ivv7Y2PrriAY= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:CgAqfJo+Xmu0GwA0411Ht3OU3OntXwsGmrmjI8ioGXI= google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405/go.mod h1:3WDQMjmJk36UQhjQ89emUzb1mdaHcPeeAh4SCBKznB4= @@ -606,10 +742,13 @@ google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGm google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gorm.io/driver/postgres v1.5.4 h1:Iyrp9Meh3GmbSuyIAGyjkN+n9K+GHX9b9MqsTL4EJCo= -gorm.io/driver/postgres v1.5.4/go.mod h1:Bgo89+h0CRcdA33Y6frlaHHVuTdOf87pmyzwW9C/BH0= -lukechampine.com/frand v1.4.2 h1:RzFIpOvkMXuPMBb9maa4ND4wjBn71E1Jpf8BzJHMaVw= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/driver/postgres v1.5.7/go.mod h1:3e019WlBaYI5o5LIdNV+LyxCMNtLOQETBXL2h4chKpA= +gorm.io/gorm v1.25.10/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= lukechampine.com/frand v1.4.2/go.mod h1:4S/TM2ZgrKejMcKMbeLjISpJMO+/eZ1zu3vYX9dtj3s= lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI= lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= From 67d0b1a7708f4cb9c421990f54f5de46af53697d Mon Sep 17 00:00:00 2001 From: Michael Brennan <76018881+michael-brennan2005@users.noreply.github.com> Date: Tue, 28 May 2024 13:18:15 -0400 Subject: [PATCH 2/9] Club and event search (#873) Co-authored-by: garrettladley --- backend/config/config.go | 2 - backend/config/local.go | 14 - backend/config/openai.go | 28 - backend/config/pinecone.go | 40 - backend/config/production.go | 12 - backend/constants/search.go | 6 +- backend/entities/clubs/base/controller.go | 8 +- backend/entities/clubs/base/service.go | 12 +- backend/entities/clubs/base/transactions.go | 94 +- backend/entities/events/base/transactions.go | 17 + backend/entities/models/club.go | 100 +- backend/entities/models/event.go | 35 + backend/entities/oauth/base/service.go | 2 +- backend/go.mod | 6 +- backend/go.sum | 58 +- backend/integrations/expose.go | 9 +- backend/integrations/oauth/google.go | 1 + backend/integrations/search/README.md | 85 - backend/integrations/search/ai.go | 127 - backend/integrations/search/search.go | 256 - backend/integrations/search/searchable.go | 11 - backend/main.go | 41 +- backend/migrations/000001_init.up.sql | 2 +- backend/search/base/controller.go | 73 + backend/search/base/routes.go | 16 + backend/search/base/service.go | 29 + backend/search/base/transactions.go | 107 + backend/search/seed.go | 125 + backend/search/types.go | 11 + backend/search/types/document.go | 5 + backend/search/types/request.go | 185 + backend/search/types/results.go | 7 + backend/search/types/utilities.go | 24 + backend/server/server.go | 2 + backend/tests/api/helpers/dependencies.go | 6 +- backend/tests/api/mocks/openai_mock.go | 19 - backend/tests/api/mocks/pinecone_mock.go | 29 - backend/tests/search_test.go | 259 - backend/utilities/json.go | 12 + cli/cmd/run.go | 26 +- cli/cmd/{pinecone.go => search.go} | 10 +- docker-compose.yml | 43 + go.work.sum | 46 +- mock_data/MOCK_DATA_OUTPUT.json | 4609 ++++++++++++++++++ mock_data/README.md | 12 +- mock_data/main.py | 368 +- mock_data/nuengage_mock_data.sql | 4408 ----------------- mock_data/requirements.txt | 1 + 48 files changed, 5759 insertions(+), 5639 deletions(-) delete mode 100644 backend/config/openai.go delete mode 100644 backend/config/pinecone.go delete mode 100644 backend/integrations/search/README.md delete mode 100644 backend/integrations/search/ai.go delete mode 100644 backend/integrations/search/search.go delete mode 100644 backend/integrations/search/searchable.go create mode 100644 backend/search/base/controller.go create mode 100644 backend/search/base/routes.go create mode 100644 backend/search/base/service.go create mode 100644 backend/search/base/transactions.go create mode 100644 backend/search/seed.go create mode 100644 backend/search/types.go create mode 100644 backend/search/types/document.go create mode 100644 backend/search/types/request.go create mode 100644 backend/search/types/results.go create mode 100644 backend/search/types/utilities.go delete mode 100644 backend/tests/api/mocks/openai_mock.go delete mode 100644 backend/tests/api/mocks/pinecone_mock.go delete mode 100644 backend/tests/search_test.go create mode 100644 backend/utilities/json.go rename cli/cmd/{pinecone.go => search.go} (65%) create mode 100644 docker-compose.yml create mode 100644 mock_data/MOCK_DATA_OUTPUT.json delete mode 100644 mock_data/nuengage_mock_data.sql diff --git a/backend/config/config.go b/backend/config/config.go index 487be2715..b661b1ff2 100644 --- a/backend/config/config.go +++ b/backend/config/config.go @@ -14,8 +14,6 @@ type Settings struct { SuperUser SuperUserSettings Auth AuthSettings AWS AWSSettings - Pinecone PineconeSettings - OpenAI OpenAISettings Resend ResendSettings Calendar CalendarSettings GoogleSettings OAuthSettings diff --git a/backend/config/local.go b/backend/config/local.go index fa6e883ac..9cefb4dc0 100644 --- a/backend/config/local.go +++ b/backend/config/local.go @@ -37,20 +37,6 @@ func readLocal(v *viper.Viper, path string, useDevDotEnv bool) (*Settings, error return nil, fmt.Errorf("failed to load %s/.env.template: %w", path, err) } - pineconeSettings, err := readPineconeSettings() - if err != nil { - return nil, fmt.Errorf("failed to read Pinecone settings: %w", err) - } - - settings.Pinecone = *pineconeSettings - - openAISettings, err := readOpenAISettings() - if err != nil { - return nil, fmt.Errorf("failed to read OpenAI settings: %w", err) - } - - settings.OpenAI = *openAISettings - awsSettings, err := readAWSSettings() if err != nil { return nil, fmt.Errorf("failed to read AWS settings: %w", err) diff --git a/backend/config/openai.go b/backend/config/openai.go deleted file mode 100644 index 1f9e96de6..000000000 --- a/backend/config/openai.go +++ /dev/null @@ -1,28 +0,0 @@ -package config - -import ( - "errors" - "os" - - m "github.com/garrettladley/mattress" -) - -type OpenAISettings struct { - APIKey *m.Secret[string] -} - -func readOpenAISettings() (*OpenAISettings, error) { - apiKey := os.Getenv("SAC_OPENAI_API_KEY") - if apiKey == "" { - return nil, errors.New("SAC_OPENAI_API_KEY is not set") - } - - secretAPIKey, err := m.NewSecret(apiKey) - if err != nil { - return nil, errors.New("failed to create secret from api key") - } - - return &OpenAISettings{ - APIKey: secretAPIKey, - }, nil -} diff --git a/backend/config/pinecone.go b/backend/config/pinecone.go deleted file mode 100644 index c92ed7c65..000000000 --- a/backend/config/pinecone.go +++ /dev/null @@ -1,40 +0,0 @@ -package config - -import ( - "errors" - "os" - - m "github.com/garrettladley/mattress" -) - -type PineconeSettings struct { - IndexHost *m.Secret[string] - APIKey *m.Secret[string] -} - -func readPineconeSettings() (*PineconeSettings, error) { - indexHost := os.Getenv("SAC_PINECONE_INDEX_HOST") - if indexHost == "" { - return nil, errors.New("SAC_PINECONE_INDEX_HOST is not set") - } - - secretIndexHost, err := m.NewSecret(indexHost) - if err != nil { - return nil, errors.New("failed to create secret from index host") - } - - apiKey := os.Getenv("SAC_PINECONE_API_KEY") - if apiKey == "" { - return nil, errors.New("SAC_PINECONE_API_KEY is not set") - } - - secretAPIKey, err := m.NewSecret(apiKey) - if err != nil { - return nil, errors.New("failed to create secret from api key") - } - - return &PineconeSettings{ - IndexHost: secretIndexHost, - APIKey: secretAPIKey, - }, nil -} diff --git a/backend/config/production.go b/backend/config/production.go index 8045320e2..6caf89653 100644 --- a/backend/config/production.go +++ b/backend/config/production.go @@ -78,16 +78,6 @@ func readProd(v *viper.Viper) (*Settings, error) { return nil, errors.New("failed to create secret from refresh token") } - pineconeSettings, err := readPineconeSettings() - if err != nil { - return nil, fmt.Errorf("failed to read Pinecone settings: %w", err) - } - - openAISettings, err := readOpenAISettings() - if err != nil { - return nil, fmt.Errorf("failed to read OpenAI settings: %w", err) - } - awsSettings, err := readAWSSettings() if err != nil { return nil, fmt.Errorf("failed to read AWS settings: %w", err) @@ -129,8 +119,6 @@ func readProd(v *viper.Viper) (*Settings, error) { AccessKey: authAccessKey, RefreshKey: authRefreshKey, }, - Pinecone: *pineconeSettings, - OpenAI: *openAISettings, AWS: *awsSettings, Resend: *resendSettings, Calendar: prodSettings.Calendar, diff --git a/backend/constants/search.go b/backend/constants/search.go index ab50d8c68..9065bc2b0 100644 --- a/backend/constants/search.go +++ b/backend/constants/search.go @@ -1,6 +1,8 @@ package constants const ( - SCORE_THRESHOLD float32 = 0.7 - TOP_K_RESULTS int = 25 + SEARCH_URL = "http://127.0.0.1:9200" + CLUBS_INDEX = "clubs" + EVENTS_INDEX = "events" + SEARCH_QUERY_DEFAULT_MAX_MEMBERS = 16384 ) diff --git a/backend/entities/clubs/base/controller.go b/backend/entities/clubs/base/controller.go index add4ae5b5..0d665fa11 100644 --- a/backend/entities/clubs/base/controller.go +++ b/backend/entities/clubs/base/controller.go @@ -3,7 +3,6 @@ package base import ( "net/http" - "github.com/GenerateNU/sac/backend/entities/models" "github.com/GenerateNU/sac/backend/utilities" "github.com/garrettladley/fiberpaginate" "github.com/gofiber/fiber/v2" @@ -31,17 +30,12 @@ func NewClubController(clubService ClubServiceInterface) *ClubController { // @Failure 500 {object} error // @Router /clubs/ [get] func (cl *ClubController) GetClubs(c *fiber.Ctx) error { - var queryParams models.ClubQueryParams - if err := c.QueryParser(&queryParams); err != nil { - return err - } - pagination, ok := fiberpaginate.FromContext(c) if !ok { return utilities.ErrExpectedPagination } - clubs, err := cl.clubService.GetClubs(&queryParams, *pagination) + clubs, err := cl.clubService.GetClubs(*pagination) if err != nil { return err } diff --git a/backend/entities/clubs/base/service.go b/backend/entities/clubs/base/service.go index 6891aeb1d..3bfebe917 100644 --- a/backend/entities/clubs/base/service.go +++ b/backend/entities/clubs/base/service.go @@ -11,7 +11,7 @@ import ( ) type ClubServiceInterface interface { - GetClubs(queryParams *models.ClubQueryParams, pageInfo fiberpaginate.PageInfo) ([]models.Club, error) + GetClubs(pageInfo fiberpaginate.PageInfo) ([]models.Club, error) GetClub(id string) (*models.Club, error) CreateClub(clubBody CreateClubRequestBody) (*models.Club, error) UpdateClub(id string, clubBody UpdateClubRequestBody) (*models.Club, error) @@ -26,8 +26,8 @@ func NewClubService(serviceParams types.ServiceParams) ClubServiceInterface { return &ClubService{serviceParams} } -func (c *ClubService) GetClubs(queryParams *models.ClubQueryParams, pageInfo fiberpaginate.PageInfo) ([]models.Club, error) { - return GetClubs(c.DB, c.Integrations.Search, queryParams, pageInfo) +func (c *ClubService) GetClubs(pagination fiberpaginate.PageInfo) ([]models.Club, error) { + return GetClubs(c.DB, pagination) } func (c *ClubService) CreateClub(clubBody CreateClubRequestBody) (*models.Club, error) { @@ -40,7 +40,7 @@ func (c *ClubService) CreateClub(clubBody CreateClubRequestBody) (*models.Club, return nil, err } - return CreateClub(c.DB, c.Integrations.Search, clubBody.UserID, *club) + return CreateClub(c.DB, clubBody.UserID, *club) } func (c *ClubService) GetClub(id string) (*models.Club, error) { @@ -71,7 +71,7 @@ func (c *ClubService) UpdateClub(id string, clubBody UpdateClubRequestBody) (*mo return nil, err } - return UpdateClub(c.DB, c.Integrations.Search, *idAsUUID, *club) + return UpdateClub(c.DB, *idAsUUID, *club) } func (c *ClubService) DeleteClub(id string) error { @@ -80,5 +80,5 @@ func (c *ClubService) DeleteClub(id string) error { return err } - return DeleteClub(c.DB, c.Integrations.Search, *idAsUUID) + return DeleteClub(c.DB, *idAsUUID) } diff --git a/backend/entities/clubs/base/transactions.go b/backend/entities/clubs/base/transactions.go index c1352a5b8..8399b7c24 100644 --- a/backend/entities/clubs/base/transactions.go +++ b/backend/entities/clubs/base/transactions.go @@ -3,75 +3,21 @@ package base import ( "errors" - "github.com/GenerateNU/sac/backend/integrations/search" + "github.com/GenerateNU/sac/backend/constants" "github.com/GenerateNU/sac/backend/utilities" "github.com/garrettladley/fiberpaginate" - "github.com/sahilm/fuzzy" "github.com/GenerateNU/sac/backend/entities/models" "github.com/GenerateNU/sac/backend/entities/users" - + search "github.com/GenerateNU/sac/backend/search/base" "github.com/google/uuid" "gorm.io/gorm" "gorm.io/gorm/clause" ) -func GetClubs(db *gorm.DB, pinecone search.SearchClientInterface, queryParams *models.ClubQueryParams, pageInfo fiberpaginate.PageInfo) ([]models.Club, error) { +func GetClubs(db *gorm.DB, pageInfo fiberpaginate.PageInfo) ([]models.Club, error) { query := db.Model(&models.Club{}) - - if queryParams.Tags != nil && len(queryParams.Tags) > 0 { - query = query.Preload("Tags") - } - - query = query.Where(queryParams.IntoWhere()) - query = query.Where("name != ?", "SAC") - - if queryParams.Tags != nil && len(queryParams.Tags) > 0 { - query = query.Joins("JOIN club_tags ON club_tags.club_id = clubs.id"). - Where("club_tags.tag_id IN ?", queryParams.Tags). // add search function here - Group("clubs.id") // ensure unique club records - } - - if queryParams.Search != "" { - clubSearch := models.NewClubSearch(queryParams.Search) - resultIDs, err := pinecone.Search(clubSearch) - if err != nil { - return nil, err - } - - query = query.Where("id IN ?", resultIDs) - } - - var clubs models.Clubs - - if queryParams.Search != "" { - if err := query.Find(&clubs).Error; err != nil { - return nil, err - } - - // len(matches) <= len(clubs), because it discardss results that don't fuzz at all. - matches := fuzzy.FindFrom(queryParams.Search, clubs) - - // Copy the sorted, fuzzed matches to the top of the list, and record their indices - // in a list. - clubsSorted := models.Clubs{} - idxMap := map[int]bool{} - for _, match := range matches { - clubsSorted = append(clubsSorted, clubs[match.Index]) - idxMap[match.Index] = true - } - - // For the remaining clubs, append them to the bottom of the list, making sure not - // to include the fuzzed clubs again. - for i, club := range clubs { - _, exists := idxMap[i] - if !exists { - clubsSorted = append(clubsSorted, club) - } - } - - return clubsSorted, nil - } + var clubs []models.Club if err := query.Scopes(utilities.IntoScope(pageInfo, query)).Find(&clubs).Error; err != nil { return nil, err @@ -80,7 +26,7 @@ func GetClubs(db *gorm.DB, pinecone search.SearchClientInterface, queryParams *m return clubs, nil } -func CreateClub(db *gorm.DB, pinecone search.SearchClientInterface, userId uuid.UUID, club models.Club) (*models.Club, error) { +func CreateClub(db *gorm.DB, userId uuid.UUID, club models.Club) (*models.Club, error) { user, err := users.GetUser(db, userId) if err != nil { return nil, err @@ -120,15 +66,20 @@ func CreateClub(db *gorm.DB, pinecone search.SearchClientInterface, userId uuid. return nil, err } - if err := pinecone.Upsert([]search.Searchable{&club}); err != nil { + if err := tx.Commit().Error; err != nil { tx.Rollback() return nil, err } - return &club, tx.Commit().Error + err = search.Upsert[models.Club](db, constants.CLUBS_INDEX, club.ID.String(), &club) + if err != nil { + return nil, err + } + + return &club, nil } -func UpdateClub(db *gorm.DB, pinecone search.SearchClientInterface, id uuid.UUID, club models.Club) (*models.Club, error) { +func UpdateClub(db *gorm.DB, id uuid.UUID, club models.Club) (*models.Club, error) { tx := db.Begin() defer func() { if r := recover(); r != nil { @@ -151,15 +102,20 @@ func UpdateClub(db *gorm.DB, pinecone search.SearchClientInterface, id uuid.UUID return nil, err } - if pinecone.Upsert([]search.Searchable{&existingClub}) != nil { + if err := tx.Commit().Error; err != nil { tx.Rollback() return nil, err } + err = search.Upsert[models.Club](db, constants.CLUBS_INDEX, club.ID.String(), &club) + if err != nil { + return nil, err + } + return &existingClub, tx.Commit().Error } -func DeleteClub(db *gorm.DB, pinecone search.SearchClientInterface, id uuid.UUID) error { +func DeleteClub(db *gorm.DB, id uuid.UUID) error { tx := db.Begin() defer func() { if r := recover(); r != nil { @@ -177,11 +133,6 @@ func DeleteClub(db *gorm.DB, pinecone search.SearchClientInterface, id uuid.UUID return err } - if err := pinecone.Delete([]search.Searchable{&existingClub}); err != nil { - tx.Rollback() - return err - } - if result := tx.Delete(&models.Club{}, id); result.RowsAffected == 0 { tx.Rollback() if result.Error == nil { @@ -190,5 +141,10 @@ func DeleteClub(db *gorm.DB, pinecone search.SearchClientInterface, id uuid.UUID return result.Error } + err = search.Delete(db, constants.CLUBS_INDEX, id.String()) + if err != nil { + return err + } + return tx.Commit().Error } diff --git a/backend/entities/events/base/transactions.go b/backend/entities/events/base/transactions.go index 566d0c262..10b47a15e 100644 --- a/backend/entities/events/base/transactions.go +++ b/backend/entities/events/base/transactions.go @@ -4,10 +4,12 @@ import ( "errors" "log/slog" + "github.com/GenerateNU/sac/backend/constants" "github.com/GenerateNU/sac/backend/entities/events" "github.com/GenerateNU/sac/backend/entities/models" "github.com/garrettladley/fiberpaginate" + search "github.com/GenerateNU/sac/backend/search/base" "github.com/GenerateNU/sac/backend/utilities" "github.com/google/uuid" @@ -29,6 +31,11 @@ func CreateEvent(db *gorm.DB, event models.Event) (*models.Event, error) { return nil, err } + err := search.Upsert[models.Event](db, constants.EVENTS_INDEX, event.ID.String(), &event) + if err != nil { + return nil, err + } + return &event, nil } @@ -49,6 +56,11 @@ func updateEvent(db *gorm.DB, id uuid.UUID, event models.Event) ([]models.Event, return nil, result.Error } + err := search.Upsert[models.Event](db, constants.EVENTS_INDEX, id.String(), &event) + if err != nil { + return nil, err + } + return []models.Event{resultingEvent}, nil } @@ -82,5 +94,10 @@ func DeleteEvent(db *gorm.DB, id uuid.UUID) error { return result.Error } + err := search.Delete(db, constants.EVENTS_INDEX, id.String()) + if err != nil { + return err + } + return nil } diff --git a/backend/entities/models/club.go b/backend/entities/models/club.go index 217338f87..3eb8445cb 100644 --- a/backend/entities/models/club.go +++ b/backend/entities/models/club.go @@ -1,9 +1,6 @@ package models import ( - "fmt" - "strings" - "github.com/google/uuid" "gorm.io/gorm" ) @@ -40,90 +37,25 @@ type Club struct { Notifcation []Notification `gorm:"polymorphic:Reference;" json:"-"` } -type ClubQueryParams struct { - Tags []string `query:"tags"` - MinMembers int `query:"min_members"` - MaxMembers int `query:"max_members"` - RecruitmentCycle *RecruitmentCycle `query:"recruitment_cycle"` - IsRecruiting *bool `query:"is_recruiting"` - MinWeeklyTimeCommitment int `query:"min_weekly_time_commitment"` - MaxWeeklyTimeCommitment int `query:"max_weekly_time_commitment"` - OneWordToDescribeUs string `query:"one_word_to_describe_us"` - Search string `query:"search"` -} - -type ClubSearch struct { - SearchString string `query:"search"` -} - -func NewClubSearch(searchQuery string) *ClubSearch { - return &ClubSearch{ - SearchString: searchQuery, - } -} - -// dummy searchID -func (cs *ClubSearch) SearchId() string { - return "" +type ClubSearchDocument struct { + Name string `json:"name"` + Preview string `json:"preview"` + Description string `json:"description"` + NumMembers int `json:"num_members"` + Tags []string `json:"tags"` } -func (cs *ClubSearch) Namespace() string { - return "clubs" -} - -func (cs *ClubSearch) EmbeddingString() string { - return cs.SearchString -} - -func (cqp *ClubQueryParams) IntoWhere() string { - conditions := make([]string, 0) - - if cqp.MinMembers != 0 { - conditions = append(conditions, fmt.Sprintf("num_members >= %d", cqp.MinMembers)) - } - if cqp.MaxMembers != 0 { - conditions = append(conditions, fmt.Sprintf("num_members <= %d", cqp.MaxMembers)) - } - if cqp.RecruitmentCycle != nil { - conditions = append(conditions, fmt.Sprintf("recruitment_cycle = '%s'", *cqp.RecruitmentCycle)) - } - if cqp.IsRecruiting != nil { - conditions = append(conditions, fmt.Sprintf("is_recruiting = %t", *cqp.IsRecruiting)) - } - if cqp.MinWeeklyTimeCommitment != 0 { - conditions = append(conditions, fmt.Sprintf("weekly_time_commitment >= %d", cqp.MinWeeklyTimeCommitment)) - } - if cqp.MaxWeeklyTimeCommitment != 0 { - conditions = append(conditions, fmt.Sprintf("weekly_time_commitment <= %d", cqp.MaxWeeklyTimeCommitment)) - } - if cqp.OneWordToDescribeUs != "" { - conditions = append(conditions, fmt.Sprintf("one_word_to_describe_us = '%s'", cqp.OneWordToDescribeUs)) +func (c *Club) ToSearchDocument() interface{} { + tagIds := make([]string, len(c.Tag)) + for i, tag := range c.Tag { + tagIds[i] = tag.ID.String() } - if len(conditions) == 0 { - return "" + return ClubSearchDocument{ + Name: c.Name, + Preview: c.Preview, + Description: c.Description, + NumMembers: c.NumMembers, + Tags: tagIds, } - return strings.Join(conditions, " AND ") -} - -func (c *Club) SearchId() string { - return c.ID.String() -} - -func (c *Club) Namespace() string { - return "clubs" -} - -func (c *Club) EmbeddingString() string { - return fmt.Sprintf("%s %s %s %s %s", c.Name, c.Name, c.Name, c.Name, c.Description) -} - -type Clubs []Club - -func (c Clubs) String(i int) string { - return c[i].Name -} - -func (c Clubs) Len() int { - return len(c) } diff --git a/backend/entities/models/event.go b/backend/entities/models/event.go index 12eb1b0f6..3856203fc 100644 --- a/backend/entities/models/event.go +++ b/backend/entities/models/event.go @@ -47,3 +47,38 @@ type Event struct { Tag []Tag `gorm:"many2many:event_tags;" json:"-"` Notification []Notification `gorm:"polymorphic:Reference;" json:"-"` } + +// How Events are represented in the OpenSearch index. +type EventSearchDocument struct { + Name string `json:"name"` + Preview string `json:"preview"` + Description string `json:"description"` + EventType EventType `json:"event_type"` + StartTime time.Time `json:"start_time"` + EndTime time.Time `json:"end_time"` + Clubs []string `json:"clubs"` + Tags []string `json:"tags"` +} + +func (c *Event) ToSearchDocument() interface{} { + tagIds := make([]string, len(c.Tag)) + for i, tag := range c.Tag { + tagIds[i] = tag.ID.String() + } + + clubIds := make([]string, len(c.Clubs)) + for i, club := range c.Clubs { + clubIds[i] = club.ID.String() + } + + return EventSearchDocument{ + Name: c.Name, + Preview: c.Preview, + Description: c.Description, + EventType: c.EventType, + StartTime: c.StartTime, + EndTime: c.EndTime, + Tags: tagIds, + Clubs: clubIds, + } +} diff --git a/backend/entities/oauth/base/service.go b/backend/entities/oauth/base/service.go index 7da6d6cfb..7ff7ddd68 100644 --- a/backend/entities/oauth/base/service.go +++ b/backend/entities/oauth/base/service.go @@ -161,11 +161,11 @@ func (e *OAuthService) tokenExchange(client *oauth.OAuthClient, code string) (*m if err != nil { return nil, err } + defer resp.Body.Close() if !utilities.IsOk(resp.StatusCode) { return nil, errors.New("failed to exchange code for token") } - defer resp.Body.Close() body, err := io.ReadAll(resp.Body) if err != nil { diff --git a/backend/go.mod b/backend/go.mod index 013d87529..14d39ee4c 100644 --- a/backend/go.mod +++ b/backend/go.mod @@ -14,13 +14,11 @@ require ( github.com/gofiber/swagger v1.0.0 github.com/golang-jwt/jwt v3.2.2+incompatible github.com/google/uuid v1.6.0 - github.com/h2non/gock v1.2.0 github.com/huandu/go-assert v1.1.6 github.com/joho/godotenv v1.5.1 github.com/mcnijman/go-emailaddress v1.1.1 github.com/redis/go-redis/v9 v9.5.1 github.com/resend/resend-go/v2 v2.6.0 - github.com/sahilm/fuzzy v0.1.1 github.com/spf13/viper v1.18.2 github.com/swaggo/swag v1.16.3 go.opentelemetry.io/otel/sdk v1.27.0 @@ -34,7 +32,6 @@ require ( require ( github.com/awnumar/memcall v0.2.0 // indirect github.com/awnumar/memguard v0.22.5 // indirect - github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 // indirect github.com/jackc/puddle/v2 v2.2.1 // indirect github.com/philhofer/fwd v1.1.2 // indirect github.com/smartystreets/goconvey v1.8.1 // indirect @@ -80,7 +77,6 @@ require ( github.com/jinzhu/now v1.1.5 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/klauspost/compress v1.17.7 // indirect - github.com/kylelemons/godebug v1.1.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect @@ -105,7 +101,7 @@ require ( go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.27.0 go.uber.org/multierr v1.11.0 // indirect golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 // indirect - golang.org/x/net v0.24.0 // indirect + golang.org/x/net v0.25.0 // indirect golang.org/x/sys v0.20.0 // indirect golang.org/x/tools v0.20.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/backend/go.sum b/backend/go.sum index b0981411c..d11f836aa 100644 --- a/backend/go.sum +++ b/backend/go.sum @@ -69,6 +69,8 @@ github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJn github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= github.com/go-playground/validator/v10 v10.20.0 h1:K9ISHbSaI0lyB2eWMPJo+kOS/FBExVwjEviJTixqxL8= github.com/go-playground/validator/v10 v10.20.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= +github.com/go-resty/resty/v2 v2.13.1 h1:x+LHXBI2nMB1vqndymf26quycC4aggYJ7DECYbiz03g= +github.com/go-resty/resty/v2 v2.13.1/go.mod h1:GznXlLxkq6Nh4sU59rPmUw3VtgpO3aS96ORAI6Q7d+0= github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 h1:TQcrn6Wq+sKGkpyPvppOz99zsMBaUOKXq6HSv655U1c= github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA= @@ -91,10 +93,6 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g= github.com/gopherjs/gopherjs v1.17.2/go.mod h1:pRRIvn/QzFLrKfvEz3qUuEhtE/zLCWfreZ6J5gM2i+k= -github.com/h2non/gock v1.2.0 h1:K6ol8rfrRkUOefooBC8elXoaNGYkpp7y2qcxGG6BzUE= -github.com/h2non/gock v1.2.0/go.mod h1:tNhoxHYW2W42cYkYb1WqzdbYIieALC99kpYr7rH/BQk= -github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw= -github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -132,8 +130,6 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= @@ -157,8 +153,6 @@ github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32 h1:W6apQkHrMkS0Muv8G/TipAy/FJl/rCYT0+EuS8+Z0z4= -github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= @@ -185,8 +179,6 @@ github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6ke github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= -github.com/sahilm/fuzzy v0.1.1 h1:ceu5RHF8DGgoi+/dR5PsECjCDH1BE3Fnmpo7aVXOdRA= -github.com/sahilm/fuzzy v0.1.1/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y= github.com/smarty/assertions v1.15.0 h1:cR//PqUBUiQRakZWqBiFFQ9wb8emQGDb0HeGdqGByCY= github.com/smarty/assertions v1.15.0/go.mod h1:yABtdzeQs6l1brC900WlRNwj6ZR55d7B+E8C6HtKdec= github.com/smartystreets/goconvey v1.8.1 h1:qGjIddxOk4grTu9JPOU31tVfq3cNdBlNa5sSznIX1xY= @@ -226,6 +218,7 @@ github.com/valyala/fasthttp v1.52.0 h1:wqBQpxH71XW0e2g+Og4dzQM8pk34aFYlA1Ga8db7g github.com/valyala/fasthttp v1.52.0/go.mod h1:hf5C4QnVMkNXMspnsUlfM3WitlgYflyhHYoKol/szxQ= github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8= github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.opentelemetry.io/contrib v1.17.0 h1:lJJdtuNsP++XHD7tXDYEFSpsqIc7DzShuXMR5PwkmzA= go.opentelemetry.io/contrib v1.17.0/go.mod h1:gIzjwWFoGazJmtCaDgViqOSJPde2mCWzv60o0bWPcZs= go.opentelemetry.io/contrib/propagators/b3 v1.17.0 h1:ImOVvHnku8jijXqkwCSyYKRDt2YrnGXD4BbhcpfbfJo= @@ -248,26 +241,67 @@ go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 h1:985EYyeCOxTpcgOTJpflJUwOeEz0CQOdPt73OzpE9F8= golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180911220305-26e67e76b6c3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= -golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/backend/integrations/expose.go b/backend/integrations/expose.go index aee8dca51..6e8584150 100644 --- a/backend/integrations/expose.go +++ b/backend/integrations/expose.go @@ -4,13 +4,10 @@ import ( "github.com/GenerateNU/sac/backend/integrations/email" "github.com/GenerateNU/sac/backend/integrations/file" "github.com/GenerateNU/sac/backend/integrations/oauth" - "github.com/GenerateNU/sac/backend/integrations/search" ) type Integrations struct { - Search search.SearchClientInterface - AI search.AIClientInterface - Email email.EmailClientInterface - File file.FileClientInterface - OAuth oauth.OAuthResources + Email email.EmailClientInterface + File file.FileClientInterface + OAuth oauth.OAuthResources } diff --git a/backend/integrations/oauth/google.go b/backend/integrations/oauth/google.go index ce24a521b..55dff4aa5 100644 --- a/backend/integrations/oauth/google.go +++ b/backend/integrations/oauth/google.go @@ -37,6 +37,7 @@ func (client *GoogleOAuthClient) Revoke(token string) error { if err != nil { return err } + defer resp.Body.Close() if !utilities.IsOk(resp.StatusCode) { return errors.New("failed to revoke token") diff --git a/backend/integrations/search/README.md b/backend/integrations/search/README.md deleted file mode 100644 index f6e293b6d..000000000 --- a/backend/integrations/search/README.md +++ /dev/null @@ -1,85 +0,0 @@ -# Jargon - -## Embeddings - -**Problem**: We have arbitrary-dimension data, such as descriptions for clubs, or searches for -events. Given a piece of this arbitrary-dimension data (search, club desc.) we want to find -other arbitrary-dimension data that is similar to it; think 2 club descriptions where both clubs -are acapella groups, 2 search queries that are both effectively looking for professional -fraternities, etc. - -**Solution**: Transform the arbitrary-dimension data to fixed-dimension data, say, a vector of floating-point numbers that is _n_-elements large. Make the transformation in -such a way that similar arbitrary-dimension pieces of data will also have similar fixed-dimension data, _i.e_ vectors that are close together (think Euclidean distance). - -**How do we do this transformation**: Train a machine learning model on large amounts of text, and then -use the model to make vectors. - -**So what's an embedding?** Formally, when we refer to the embedding of a particular object, we refer to the vector created by feeding that object through the machine-learning model. That creates a representation of the object in a fixed-dimension space. - -This is arguably the most complex/unintuitive part of understanding search, so here are some extra -resources: - -- [What are embeddings?](https://www.cloudflare.com/learning/ai/what-are-embeddings/) -- [fastai book - Chapters 10 and 12 are both about natural language processing](https://github.com/fastai/fastbook) -- [Vector Embeddings for Developers: The Basics](https://www.pinecone.io/learn/vector-embeddings-for-developers/) - -### OpenAI API - -**Problem:** We need a machine learning model to create the embeddings. - -**Solution:** Use -OpenAI's api to create the embeddings for us; we send text over a REST api and we get a back a -vector that represents that text's embedding. - -### PineconeDB - -**Problem:** We've created a bunch of embeddings for our club descriptions (or event -descriptions, etc.), we now need a place to store them and a way to search through them (with an -embedding for a search query) - - **Solution:** PineconeDB is a vector database that allows us to -upload our embeddings and then query them by giving a vector to find similar ones to. - -## How to create searchable objects for fun and fame and profit - -```go -package search - -// in backend/src/search/searchable.go -type Searchable interface { - SearchId() string - Namespace() string - EmbeddingString() string -} - -// in backend/src/search/pinecone.go -type PineconeClientInterface interface { - Upsert(item Searchable) error - Delete(item Searchable) error - Search(item Searchable, topK int) ([]string, error) -} -``` - -1. Implement the `Searchable` interface on whatever model you want to make searchable. - `Searchable` requires 3 methods: - - `SearchId()`: This should return a unique id that can be used to store a model entry's - embedding (if you want to store it at all) in PineconeDB. In practice, this should be the - entry's UUID. - - `Namespace()`: Namespaces are to PineconeDB what tables are to PostgreSQL. Searching in - one namespace will only retrieve vectors in that namespace. In practice, this should be - unique to the model type (i.e `Club`, `Event`, etc.) - - `EmbeddingString()`: This should return the string you want to feed into the OpenAI API - and create an embedding for. In practice, create a string with the fields you think will - affect the embedding all appended together, and/or try repeating a field multiple times in - the string to see if that gives a better search experience. -2. Use a `PineconeClientInterface` and call `Upsert` with your searchable object to send it to the - database, and `Delete` with your searchable object to delete it from the database. Upserts - should be done on creation and updating of a model entry, and deletes should be done on - deleting of a model entry. In practice, a `PineconeClientInterface` should be passed in to - the various services in `backend/server.go`, similar to how `*gorm.DB` and `*validator. -Validator` instances are passed in. - -## How to search for fun and fame and profit - -TODO: (probably create a searchable object that just uses namespace and embeddingstring, pass to -pineconeclient search) diff --git a/backend/integrations/search/ai.go b/backend/integrations/search/ai.go deleted file mode 100644 index 127cee913..000000000 --- a/backend/integrations/search/ai.go +++ /dev/null @@ -1,127 +0,0 @@ -package search - -import ( - "errors" - "fmt" - "net/http" - - "github.com/goccy/go-json" - - "github.com/GenerateNU/sac/backend/config" - - "github.com/GenerateNU/sac/backend/utilities" -) - -type AIClientInterface interface { - CreateEmbedding(items []Searchable) ([]Embedding, error) - CreateModeration(items []Searchable) ([]ModerationResult, error) -} - -type OpenAIClient struct { - Settings config.OpenAISettings -} - -func NewOpenAIClient(settings config.OpenAISettings) AIClientInterface { - return &OpenAIClient{Settings: settings} -} - -type CreateEmbeddingRequestBody struct { - Input []string `json:"input"` - Model string `json:"model"` -} - -type Embedding struct { - Embedding []float32 `json:"embedding"` -} - -type CreateEmbeddingResponseBody struct { - Data []Embedding `json:"data"` -} - -func (c *OpenAIClient) CreateEmbedding(items []Searchable) ([]Embedding, error) { - embeddingStrings := make([]string, len(items)) - for i, item := range items { - embeddingStrings[i] = item.EmbeddingString() - } - - embeddingBody, err := json.Marshal( - CreateEmbeddingRequestBody{ - Input: embeddingStrings, - Model: "text-embedding-ada-002", - }) - if err != nil { - return nil, fmt.Errorf("failed to create embedding request body: %w", err) - } - - resp, err := utilities.Request(http.MethodPost, "https://api.openai.com/v1/embeddings", embeddingBody, openAIModifiers(c.Settings)...) - if err != nil { - return nil, fmt.Errorf("failed to create embedding: %w", err) - } - - var embeddingResultBody CreateEmbeddingResponseBody - - err = json.NewDecoder(resp.Body).Decode(&embeddingResultBody) - if err != nil { - return nil, fmt.Errorf("failed to create embedding: %w", err) - } - - if len(embeddingResultBody.Data) < 1 { - return nil, fmt.Errorf("failed to create embedding: %w", err) - } - - return embeddingResultBody.Data, nil -} - -type CreateModerationRequestBody struct { - Input []string `json:"input"` - Model string `json:"model"` -} - -type CreateModerationResponseBody struct { - Results []ModerationResult `json:"results"` -} - -type ModerationResult struct { - Flagged bool `json:"flagged"` -} - -func (c *OpenAIClient) CreateModeration(items []Searchable) ([]ModerationResult, error) { - searchStrings := make([]string, len(items)) - for i, item := range items { - searchStrings[i] = item.EmbeddingString() - } - - moderationBody, err := json.Marshal( - CreateModerationRequestBody{ - Input: searchStrings, - Model: "text-moderation-stable", - }) - if err != nil { - return nil, fmt.Errorf("failed to create moderation request body: %w", err) - } - - resp, err := utilities.Request(http.MethodPost, "https://api.openai.com/v1/moderations", moderationBody, openAIModifiers(c.Settings)...) - if err != nil { - return nil, fmt.Errorf("failed to create moderation: %w", err) - } - - var moderationResultBody CreateModerationResponseBody - - err = json.NewDecoder(resp.Body).Decode(&moderationResultBody) - if err != nil { - return nil, fmt.Errorf("failed to create moderation: %w", err) - } - - if len(moderationResultBody.Results) < 1 { - return nil, errors.New("failed to create moderation") - } - - return moderationResultBody.Results, nil -} - -func openAIModifiers(settings config.OpenAISettings) []utilities.RequestModifier { - return []utilities.RequestModifier{ - utilities.Authorization(settings.APIKey.Expose()), - utilities.JSON(), - } -} diff --git a/backend/integrations/search/search.go b/backend/integrations/search/search.go deleted file mode 100644 index 696fc7120..000000000 --- a/backend/integrations/search/search.go +++ /dev/null @@ -1,256 +0,0 @@ -package search - -import ( - "fmt" - "net/http" - - "github.com/garrettladley/mattress" - "gorm.io/gorm" - - "github.com/goccy/go-json" - "github.com/gofiber/fiber/v2/log" - - "github.com/GenerateNU/sac/backend/config" - "github.com/GenerateNU/sac/backend/constants" - "github.com/GenerateNU/sac/backend/entities/models" - - "github.com/GenerateNU/sac/backend/utilities" -) - -type SearchClientInterface interface { - Seed(db *gorm.DB) error - Upsert(items []Searchable) error - Delete(items []Searchable) error - Search(item Searchable) ([]string, error) -} - -type PineconeClient struct { - PineconeSettings config.PineconeSettings - IndexName *mattress.Secret[string] - aiClient AIClientInterface -} - -// Connects to an existing Pinecone index, using the host and keys provided in settings. -func NewPineconeClient(aiClient AIClientInterface, pineconeSettings config.PineconeSettings) *PineconeClient { - return &PineconeClient{ - PineconeSettings: pineconeSettings, - aiClient: aiClient, - } -} - -// Seeds the pinecone index with the clubs currently in the database. -func (c *PineconeClient) Seed(db *gorm.DB) error { - var clubs []models.Club - - if err := db.Find(&clubs).Error; err != nil { - return fmt.Errorf("failed to get clubs from database: %w", err) - } - - searchables := make([]Searchable, len(clubs)) - for i := range clubs { - searchables[i] = &clubs[i] - } - - var chunks [][]Searchable - chunkSize := 50 - - for i := 0; i < len(searchables); i += chunkSize { - end := i + chunkSize - - if end > len(searchables) { - end = len(searchables) - } - - chunks = append(chunks, searchables[i:end]) - } - - for index, chunk := range chunks { - log.Info("Uploading chunk #%d (of %d) to pinecone...\n", index+1, len(chunks)) - err := c.Upsert(chunk) - if err != nil { - return fmt.Errorf("failed to seed pinecone index: %w", err) - } - } - - return nil -} - -func pineconeModifiers(settings config.PineconeSettings) []utilities.RequestModifier { - return []utilities.RequestModifier{ - utilities.HeaderKV("Api-Key", settings.APIKey.Expose()), - utilities.AcceptJSON(), - utilities.JSON(), - } -} - -type Vector struct { - ID string `json:"id"` - Values []float32 `json:"values"` -} - -type PineconeUpsertRequestBody struct { - Vectors []Vector `json:"vectors"` - Namespace string `json:"namespace"` -} - -// Inserts the given list of searchables to the Pinecone index. -func (c *PineconeClient) Upsert(items []Searchable) error { - if len(items) == 0 { - return nil - } - - embeddings, embeddingErr := c.aiClient.CreateEmbedding(items) - if embeddingErr != nil { - return fmt.Errorf("failed to create embeddings: %w", embeddingErr) - } - - vectors := []Vector{} - for i, item := range items { - vectors = append(vectors, Vector{ - ID: item.SearchId(), - Values: embeddings[i].Embedding, - }) - } - - upsertBody, err := json.Marshal( - PineconeUpsertRequestBody{ - Vectors: vectors, - Namespace: items[0].Namespace(), - }) - if err != nil { - return fmt.Errorf("failed to marshal upsert body: %w", err) - } - - resp, err := utilities.Request(http.MethodPost, fmt.Sprintf("%s/vectors/upsert", c.PineconeSettings.IndexHost.Expose()), upsertBody, pineconeModifiers(c.PineconeSettings)...) - if err != nil { - return fmt.Errorf("upsert request failed: %w", err) - } - - if resp.StatusCode != http.StatusOK { - return fmt.Errorf("failed to upsert to pinecone: %s", resp.Status) - } - - return nil -} - -type PineconeDeleteRequestBody struct { - IDs []string `json:"ids"` - Namespace string `json:"namespace"` - DeleteAll bool `json:"deleteAll"` -} - -// Deletes the given list of searchables from the Pinecone index. -func (c *PineconeClient) Delete(items []Searchable) error { - if len(items) == 0 { - return nil - } - - // Ensure all items are in the same namespace - namespace := items[0].Namespace() - for _, item := range items { - if item.Namespace() != namespace { - return fmt.Errorf("all items must be in the same namespace. item %s is in namespace %s, but expected %s", item.SearchId(), item.Namespace(), namespace) - } - } - - itemIds := make([]string, len(items)) - for i, item := range items { - itemIds[i] = item.SearchId() - } - - deleteBody, err := json.Marshal( - PineconeDeleteRequestBody{ - IDs: itemIds, - Namespace: namespace, - DeleteAll: false, - }) - if err != nil { - return fmt.Errorf("failed to marshal delete body: %w", err) - } - - resp, err := utilities.Request(http.MethodPost, fmt.Sprintf("%s/vectors/delete", c.PineconeSettings.IndexHost.Expose()), deleteBody, pineconeModifiers(c.PineconeSettings)...) - if err != nil { - return fmt.Errorf("delete request failed: %w", err) - } - - if resp.StatusCode != http.StatusOK { - return fmt.Errorf("failed to delete from pinecone: %s", resp.Status) - } - - return nil -} - -type PineconeSearchRequestBody struct { - IncludeValues bool `json:"includeValues"` - IncludeMetadata bool `json:"includeMetadata"` - TopK int `json:"topK"` - Vector []float32 `json:"vector"` - Namespace string `json:"namespace"` -} - -type Match struct { - Id string `json:"id"` - Score float32 `json:"score"` - Values []float32 `json:"values"` -} - -type PineconeSearchResponseBody struct { - Matches []Match `json:"matches"` - Namespace string `json:"namespace"` -} - -// Runs a search on the Pinecone index given a searchable item, and returns the topK most similar -// elements' ids. -func (c *PineconeClient) Search(item Searchable) ([]string, error) { - moderation, err := c.aiClient.CreateModeration([]Searchable{item}) - if err != nil { - return []string{}, err - } - - if moderation[0].Flagged { - return []string{}, utilities.BadRequest(fmt.Errorf("potentially harmful content detected in item %s", item)) - } - - values, err := c.aiClient.CreateEmbedding([]Searchable{item}) - if err != nil { - return []string{}, err - } - - searchBody, err := json.Marshal( - PineconeSearchRequestBody{ - IncludeValues: false, - IncludeMetadata: false, - TopK: constants.TOP_K_RESULTS, - // Only 1 item was passed to CreateEmbedding, so grab that 1 item and use its embedding. - Vector: values[0].Embedding, - Namespace: item.Namespace(), - }) - if err != nil { - return []string{}, fmt.Errorf("failed to marshal search body: %w", err) - } - - resp, err := utilities.Request(http.MethodPost, fmt.Sprintf("%s/query", c.PineconeSettings.IndexHost.Expose()), searchBody, pineconeModifiers(c.PineconeSettings)...) - if err != nil { - return []string{}, fmt.Errorf("search request failed: %w", err) - } - - if resp.StatusCode != http.StatusOK { - return []string{}, fmt.Errorf("failed to search to pinecone: %w", err) - } - - var results PineconeSearchResponseBody - err = json.NewDecoder(resp.Body).Decode(&results) - if err != nil { - return []string{}, fmt.Errorf("failed to decode search response: %w", err) - } - - resultsToReturn := []string{} - - for _, match := range results.Matches { - if match.Score > constants.SCORE_THRESHOLD { - resultsToReturn = append(resultsToReturn, match.Id) - } - } - - return resultsToReturn, nil -} diff --git a/backend/integrations/search/searchable.go b/backend/integrations/search/searchable.go deleted file mode 100644 index 8abafaf28..000000000 --- a/backend/integrations/search/searchable.go +++ /dev/null @@ -1,11 +0,0 @@ -package search - -// Searchable Represents a value that can be searched (i.e, able to create embeddings and upload them to vector db) -type Searchable interface { - // SearchId Returns the id this searchable value should be associated with. - SearchId() string - // Namespace Returns the namespace this searchable value should be associated with. - Namespace() string - // EmbeddingString Returns the string that should be used to create an embedding of this searchable value. - EmbeddingString() string -} diff --git a/backend/main.go b/backend/main.go index 57ddcf942..790d3d189 100644 --- a/backend/main.go +++ b/backend/main.go @@ -16,17 +16,15 @@ import ( "github.com/GenerateNU/sac/backend/integrations/email" "github.com/GenerateNU/sac/backend/integrations/file" "github.com/GenerateNU/sac/backend/integrations/oauth" - "github.com/GenerateNU/sac/backend/integrations/search" + "github.com/GenerateNU/sac/backend/search" "github.com/GenerateNU/sac/backend/server" "github.com/GenerateNU/sac/backend/telemetry" - "github.com/GenerateNU/sac/backend/tests/api/mocks" "github.com/GenerateNU/sac/backend/utilities" ) func main() { onlyMigrate := flag.Bool("only-migrate", false, "Specify if you want to only perform the database migration") - onlySeedPinecone := flag.Bool("seed-pinecone", false, "Specify if want to only perform the pinecone database seeding") - connectToPinecone := flag.Bool("connect-to-pinecone", false, "Connect to a real Pinecone instance instead of mock") + seedSearch := flag.Bool("seed-search", false, "Specify if you want to seed the opensearch nodes.") configPath := flag.String("config", filepath.Join("..", "config"), "Specify the path to the config directory") useDevDotEnv := flag.Bool("use-dev-dot-env", true, "Specify if you want to use the .env.dev file") @@ -51,15 +49,14 @@ func main() { return } - if *onlySeedPinecone { - openAi := search.NewOpenAIClient(config.OpenAI) - pinecone := search.NewPineconeClient(openAi, config.Pinecone) + if *seedSearch { + if err := search.SeedClubs(db); err != nil { + return + } - err := pinecone.Seed(db) - if err != nil { - utilities.Exit("Error seeding PineconeDB: %s\n", err.Error()) + if err := search.SeedEvents(db); err != nil { + return } - return } err = database.ConnPooling(db) @@ -69,7 +66,7 @@ func main() { stores := store.ConfigureRedis(*config) - integrations := configureIntegrations(config, *connectToPinecone) + integrations := configureIntegrations(config) tp := telemetry.InitTracer() @@ -99,17 +96,7 @@ func checkServerRunning(host string, port uint16) error { return nil } -func configureIntegrations(config *config.Settings, connectToPinecone bool) integrations.Integrations { - openAi := search.NewOpenAIClient(config.OpenAI) - var pinecone search.SearchClientInterface - - if connectToPinecone { - pinecone = search.NewPineconeClient(openAi, config.Pinecone) - } else { - pinecone = mocks.NewPineconeMockClient() - } - - // OAuth Integrations: +func configureIntegrations(config *config.Settings) integrations.Integrations { googleClient := oauth.GoogleOAuthClient{ OAuthConfig: config.GoogleSettings, } @@ -123,11 +110,9 @@ func configureIntegrations(config *config.Settings, connectToPinecone bool) inte } integrations := integrations.Integrations{ - File: file.NewAWSProvider(config.AWS), - AI: openAi, - Email: email.NewResendClient(config.Resend, true), - Search: pinecone, - OAuth: oauthResources, + File: file.NewAWSProvider(config.AWS), + Email: email.NewResendClient(config.Resend, true), + OAuth: oauthResources, } return integrations diff --git a/backend/migrations/000001_init.up.sql b/backend/migrations/000001_init.up.sql index 85b301896..8163d0fc5 100644 --- a/backend/migrations/000001_init.up.sql +++ b/backend/migrations/000001_init.up.sql @@ -60,7 +60,7 @@ CREATE TABLE IF NOT EXISTS events( updated_at timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP, name varchar(255) NOT NULL, preview varchar(255) NOT NULL, - description varchar(255) NOT NULL, + description text NOT NULL, event_type varchar(255) NOT NULL, location varchar(255), link varchar(255), diff --git a/backend/search/base/controller.go b/backend/search/base/controller.go new file mode 100644 index 000000000..4f7e4b8d7 --- /dev/null +++ b/backend/search/base/controller.go @@ -0,0 +1,73 @@ +package base + +import ( + "net/http" + + search_types "github.com/GenerateNU/sac/backend/search/types" + "github.com/GenerateNU/sac/backend/utilities" + "github.com/gofiber/fiber/v2" +) + +type SearchController struct { + searchService SearchServiceInterface +} + +func NewSearchController(searchService SearchServiceInterface) *SearchController { + return &SearchController{searchService: searchService} +} + +// SearchClubs godoc +// +// @Summary Searches through clubs +// @Description Searches through clubs +// @ID search-club +// @Tags search +// @Accept json +// @Produce json +// @Param searchQuery query models.SearchQueryParams true "Search Body" +// @Success 200 {object} []models.ClubSearchResult +// @Failure 404 {object} error +// @Failure 500 {object} error +// @Router /search/clubs [get] +func (s *SearchController) SearchClubs(c *fiber.Ctx) error { + var searchQuery search_types.ClubSearchRequest + + if err := c.BodyParser(&searchQuery); err != nil { + return utilities.InvalidJSON() + } + + result, err := s.searchService.SearchClubs(searchQuery) + if err != nil { + return err + } + + return c.Status(http.StatusOK).JSON(result) +} + +// SearchEvents godoc +// +// @Summary Searches through events +// @Description Searches through events +// @ID search-club +// @Tags search +// @Accept json +// @Produce json +// @Param searchQuery query models.SearchQueryParams true "Search Body" +// @Success 200 {object} []models.EventsSearchResult +// @Failure 404 {object} error +// @Failure 500 {object} error +// @Router /search/events [get] +func (s *SearchController) SearchEvents(c *fiber.Ctx) error { + var searchQuery search_types.EventSearchRequest + + if err := c.BodyParser(&searchQuery); err != nil { + return utilities.InvalidJSON() + } + + result, err := s.searchService.SearchEvents(searchQuery) + if err != nil { + return err + } + + return c.Status(http.StatusOK).JSON(result) +} diff --git a/backend/search/base/routes.go b/backend/search/base/routes.go new file mode 100644 index 000000000..7ef0a3610 --- /dev/null +++ b/backend/search/base/routes.go @@ -0,0 +1,16 @@ +package base + +import ( + "github.com/GenerateNU/sac/backend/types" +) + +func SearchRoutes(params types.RouteParams) { + searchService := NewSearchService(params.ServiceParams) + searchController := NewSearchController(searchService) + + // api/v1/search/* + search := params.Router.Group("/search") + + search.Get("/clubs", searchController.SearchClubs) + search.Get("/events", searchController.SearchEvents) +} diff --git a/backend/search/base/service.go b/backend/search/base/service.go new file mode 100644 index 000000000..347e96cb8 --- /dev/null +++ b/backend/search/base/service.go @@ -0,0 +1,29 @@ +package base + +import ( + "github.com/GenerateNU/sac/backend/entities/models" + search_types "github.com/GenerateNU/sac/backend/search/types" + + "github.com/GenerateNU/sac/backend/types" +) + +type SearchServiceInterface interface { + SearchClubs(query search_types.ClubSearchRequest) (*search_types.SearchResult[models.Club], error) + SearchEvents(query search_types.EventSearchRequest) (*search_types.SearchResult[models.Event], error) +} + +type SearchService struct { + types.ServiceParams +} + +func NewSearchService(serviceParams types.ServiceParams) SearchServiceInterface { + return &SearchService{serviceParams} +} + +func (s *SearchService) SearchClubs(query search_types.ClubSearchRequest) (*search_types.SearchResult[models.Club], error) { + return Search[models.Club](s.DB, &query) +} + +func (s *SearchService) SearchEvents(query search_types.EventSearchRequest) (*search_types.SearchResult[models.Event], error) { + return Search[models.Event](s.DB, &query) +} diff --git a/backend/search/base/transactions.go b/backend/search/base/transactions.go new file mode 100644 index 000000000..48803686d --- /dev/null +++ b/backend/search/base/transactions.go @@ -0,0 +1,107 @@ +package base + +import ( + "fmt" + "io" + "log/slog" + "net/http" + + json "github.com/goccy/go-json" + + "github.com/GenerateNU/sac/backend/constants" + "github.com/GenerateNU/sac/backend/search/types" + "github.com/GenerateNU/sac/backend/utilities" + "gorm.io/gorm" +) + +// Do a GET request to the OpenSearch instance. +func doSearchGetRequest[T, V any](url string, requestBody T) (*V, error) { + payload, err := json.Marshal(requestBody) + if err != nil { + return nil, err + } + + resp, err := utilities.Request(http.MethodGet, fmt.Sprintf("%s%s", constants.SEARCH_URL, url), payload, utilities.JSON()) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + responseBody, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + var responseData V + err = json.Unmarshal(responseBody, &responseData) + if err != nil { + return nil, err + } + + return &responseData, nil +} + +func Search[T types.Searchable](db *gorm.DB, query types.SearchRequest) (*types.SearchResult[T], error) { + result, err := doSearchGetRequest[types.SearchEndpointRequest, types.SearchEndpointResponse](fmt.Sprintf("/%s/_search", query.Index()), query.ToSearchEndpointRequest()) + if err != nil { + return nil, nil + } + + ids := make([]string, len(result.Hits.Hits)) + for i, result := range result.Hits.Hits { + ids[i] = result.Id + } + + var results []T + + if err = query.Preload(db).Where("id IN ?", ids).Find(&results).Error; err != nil { + return nil, nil + } + + return &types.SearchResult[T]{ + Results: results, + }, nil +} + +func Upsert[T types.Searchable](db *gorm.DB, index string, uuid string, model types.ToSearchDocument) error { + var elem T + + if err := db.Model(&model).Preload("Tag").Where("Clubs").Where("id = ?", uuid).Find(&elem).Error; err != nil { + return err + } + + doc := model.ToSearchDocument() + requestBody := types.Json{ + "doc": doc, + "doc_as_upsert": true, + } + payload, err := json.Marshal(requestBody) + if err != nil { + return err + } + + resp, err := utilities.Request(http.MethodPost, fmt.Sprintf("%s/%s/_update/%s", constants.SEARCH_URL, index, uuid), payload, utilities.JSON()) + if err != nil { + return err + } + defer resp.Body.Close() + + return nil +} + +func Delete(db *gorm.DB, index string, uuid string) error { + resp, err := utilities.Request(http.MethodDelete, fmt.Sprintf("%s/%s/_doc/%s", constants.SEARCH_URL, index, uuid), nil, utilities.JSON()) + if err != nil { + return err + } + defer resp.Body.Close() + + responseBody, err := io.ReadAll(resp.Body) + if err != nil { + return err + } + + slog.Info("delete successful", "response", string(responseBody), "index", index, "uuid", uuid) + + return nil +} diff --git a/backend/search/seed.go b/backend/search/seed.go new file mode 100644 index 000000000..a1b1ffc8a --- /dev/null +++ b/backend/search/seed.go @@ -0,0 +1,125 @@ +package search + +import ( + "encoding/json" + "fmt" + "net/http" + "os" + "strings" + + "github.com/GenerateNU/sac/backend/constants" + "github.com/GenerateNU/sac/backend/entities/models" + search_types "github.com/GenerateNU/sac/backend/search/types" + "github.com/GenerateNU/sac/backend/transactions" + "github.com/GenerateNU/sac/backend/utilities" + "gorm.io/gorm" +) + +// FIXME: For now it is performant enough to just delete the index and redo, but in the future +// we may have to start worrying about updating in place for this, maybe a migration-esque strategy as well. (???) +func SeedClubs(db *gorm.DB) error { + stdout := os.Stdout + + stdout.WriteString("Deleting existing club index...\n") + req, err := http.NewRequest("DELETE", fmt.Sprintf("%s/clubs", constants.SEARCH_URL), nil) + if err != nil { + return err + } + + _, err = http.DefaultClient.Do(req) + if err != nil { + return err + } + + var clubs []models.Club + + if err := transactions.PreloadTag()(db).Find(&clubs).Error; err != nil { + return err + } + + var requestBodyBuilder strings.Builder + + for _, club := range clubs { + indexData := search_types.BulkRequestCreate{} + indexData.Create.Index = "clubs" + indexData.Create.Id = club.ID.String() + indexJson, err := json.Marshal(indexData) + if err != nil { + return err + } + + clubData := club.ToSearchDocument() + clubJson, err := json.Marshal(clubData) + if err != nil { + return err + } + + requestBodyBuilder.WriteString(fmt.Sprintf("%s\n%s\n", indexJson, clubJson)) + } + + resp, err := utilities.Request(http.MethodPost, fmt.Sprintf("%s/_bulk", constants.SEARCH_URL), []byte(requestBodyBuilder.String()), utilities.JSON()) + if err != nil { + stdout.WriteString(fmt.Sprintf("Error making _bulk request for club seeding: %s\n", err.Error())) + } + defer resp.Body.Close() + + if !utilities.IsOk(resp.StatusCode) { + stdout.WriteString(fmt.Sprintf("Error making _bulk request for club seeding: response returned %d code\n", resp.StatusCode)) + } + + stdout.WriteString("Seeding clubs finished") + + return nil +} + +// FIXME: see fixme comment for SeedClubs() +func SeedEvents(db *gorm.DB) error { + stdout := os.Stdout + + stdout.WriteString("Deleting existing event index...\n") + resp, err := utilities.Request(http.MethodDelete, fmt.Sprintf("%s/events", constants.SEARCH_URL), nil, utilities.JSON()) + if err != nil { + return err + } + defer resp.Body.Close() + + var events []models.Event + + if err := db.Preload("Tag").Preload("Clubs").Not("is_draft = ?", true).Not("is_archived = ?", true).Find(&events).Error; err != nil { + return err + } + + var requestBodyBuilder strings.Builder + + for _, event := range events { + indexData := search_types.BulkRequestCreate{} + indexData.Create.Index = "events" + indexData.Create.Id = event.ID.String() + indexJson, err := json.Marshal(indexData) + if err != nil { + return err + } + + eventData := event.ToSearchDocument() + eventJson, err := json.Marshal(eventData) + if err != nil { + return err + } + + requestBodyBuilder.WriteString(fmt.Sprintf("%s\n%s\n", indexJson, eventJson)) + } + + resp, err = utilities.Request(http.MethodPost, fmt.Sprintf("%s/_bulk", constants.SEARCH_URL), []byte(requestBodyBuilder.String()), utilities.JSON()) + if err != nil { + stdout.WriteString(fmt.Sprintf("Error making _bulk request for event seeding: %s\n", err.Error())) + } + defer resp.Body.Close() + + if !utilities.IsOk(resp.StatusCode) { + stdout.WriteString(fmt.Sprintf("Error making _bulk request for event seeding: response returned %d code\n", resp.StatusCode)) + } + + stdout.WriteString("Seeding events finished") + + return nil +} diff --git a/backend/search/types.go b/backend/search/types.go new file mode 100644 index 000000000..4151122c4 --- /dev/null +++ b/backend/search/types.go @@ -0,0 +1,11 @@ +// Types that are needed to interact with OpenSearch's API. +package search + +import ( + "github.com/GenerateNU/sac/backend/entities/models" +) + +// The (successful) response of an API GET /api/v1/search/events request. +type EventSearchResult struct { + Results []models.Event `json:"results"` +} diff --git a/backend/search/types/document.go b/backend/search/types/document.go new file mode 100644 index 000000000..317e9e981 --- /dev/null +++ b/backend/search/types/document.go @@ -0,0 +1,5 @@ +package types + +type ToSearchDocument interface { + ToSearchDocument() interface{} +} diff --git a/backend/search/types/request.go b/backend/search/types/request.go new file mode 100644 index 000000000..7a50c598f --- /dev/null +++ b/backend/search/types/request.go @@ -0,0 +1,185 @@ +package types + +import ( + "strings" + "time" + + "github.com/GenerateNU/sac/backend/constants" + "github.com/GenerateNU/sac/backend/entities/models" + "gorm.io/gorm" +) + +type SearchRequest interface { + ToSearchEndpointRequest() SearchEndpointRequest + Index() string + Preload(db *gorm.DB) *gorm.DB +} + +// Used for making OpenSearch GET //_search requests. +// OpenSearch's DSL is such that we can't make this a nice static struct with all the fields +// specified; depending on what we are looking to search we'll need to add different clauses. +type SearchEndpointRequest Json + +// Used for responses from OpenSearch GET //_search requests. +type SearchEndpointResponse struct { + Hits struct { + Hits []struct { + Index string `json:"_index"` + Score float32 `json:"_score"` + Id string `json:"_id"` + } `json:"hits"` + } `json:"hits"` +} + +// JSON parameters for an API GET /api/v1/search/clubs request. +type ClubSearchRequest struct { + Search string `json:"search"` + MinMembers int `json:"min_members"` + MaxMembers int `json:"max_members"` + Tags []string `json:"tags"` +} + +// To Query DSL JSON +func (q *ClubSearchRequest) ToSearchEndpointRequest() SearchEndpointRequest { + query := BooleanQuery{} + + if q.Search != "" { + query.Must = append(query.Must, Json{ + "query_string": Json{ + "query": q.Search, + }, + }) + } + + maxMembers := 0 + if q.MaxMembers != 0 { + maxMembers = q.MaxMembers + } else { + maxMembers = constants.SEARCH_QUERY_DEFAULT_MAX_MEMBERS // FIXME: may break in the future (will a club ever have more than 16384 members?) + } + + query.Filter = append(query.Filter, Json{ + "range": Json{ + "num_members": Json{ + "lte": maxMembers, + // by default this 0, hence why we dont check it similar to maxMembers + "gte": q.MinMembers, + }, + }, + }) + + if len(q.Tags) != 0 { + query.Filter = append(query.Filter, Json{ + "match": Json{ + "tags": Json{ + "query": strings.Join(q.Tags, " "), + "operator": "or", + "minimum_should_match": 1, + }, + }, + }) + } + + return SearchEndpointRequest{ + "query": Json{ + "bool": query, + }, + } +} + +func (q *ClubSearchRequest) Preload(db *gorm.DB) *gorm.DB { + return db.Model(&models.Club{}).Preload("Tag") +} + +func (q *ClubSearchRequest) Index() string { + return "clubs" +} + +// JSON parameters for an API GET /api/v1/search/events request. +type EventSearchRequest struct { + Search string `json:"search"` + StartTime time.Time `json:"start_time"` + EndTime time.Time `json:"end_time"` + EventType []models.EventType `json:"event_type"` + Clubs []string `json:"clubs"` + Tags []string `json:"tags"` +} + +// To Query DSL JSON +func (q *EventSearchRequest) ToSearchEndpointRequest() SearchEndpointRequest { + query := BooleanQuery{} + + if q.Search != "" { + query.Must = append(query.Must, Json{ + "query_string": Json{ + "query": q.Search, + }, + }) + } + + if !q.StartTime.IsZero() { + query.Filter = append(query.Filter, Json{ + "range": Json{ + "start_time": Json{ + "gte": q.StartTime, + }, + }, + }) + } + + if !q.EndTime.IsZero() { + query.Filter = append(query.Filter, Json{ + "range": Json{ + "end_time": Json{ + "lte": q.EndTime, + }, + }, + }) + } + + if len(q.EventType) != 0 { + query.Filter = append(query.Filter, Json{ + "terms": Json{ + "event_type": q.EventType, + }, + }) + } + + if len(q.Clubs) != 0 { + query.Filter = append(query.Filter, Json{ + "match": Json{ + "tags": Json{ + "query": strings.Join(q.Clubs, " "), + "operator": "or", + "minimum_should_match": 1, + }, + }, + }) + } + + if len(q.Tags) != 0 { + query.Filter = append(query.Filter, Json{ + "match": Json{ + "tags": Json{ + "query": strings.Join(q.Tags, " "), + "operator": "or", + "minimum_should_match": 1, + }, + }, + }) + } + + return SearchEndpointRequest{ + "query": Json{ + "bool": query, + }, + } +} + +func (q *EventSearchRequest) Preload(db *gorm.DB) *gorm.DB { + return db.Model(&models.Event{}).Preload("Tag").Preload("Clubs") +} + +func (q *EventSearchRequest) Index() string { + return "events" +} diff --git a/backend/search/types/results.go b/backend/search/types/results.go new file mode 100644 index 000000000..f7c4a8b5a --- /dev/null +++ b/backend/search/types/results.go @@ -0,0 +1,7 @@ +package types + +import "github.com/GenerateNU/sac/backend/entities/models" + +type SearchResult[T models.Event | models.Club] struct { + Results []T `json:"results"` +} diff --git a/backend/search/types/utilities.go b/backend/search/types/utilities.go new file mode 100644 index 000000000..4edfee64f --- /dev/null +++ b/backend/search/types/utilities.go @@ -0,0 +1,24 @@ +package types + +import "github.com/GenerateNU/sac/backend/entities/models" + +type Json map[string]interface{} + +// Used for SearchEndpointRequests. +type BooleanQuery struct { + Must []Json `json:"must"` + Should []Json `json:"should"` + Filter []Json `json:"filter"` +} + +// Used for making OpenSearch /_bulk requests. +type BulkRequestCreate struct { + Create struct { + Index string `json:"_index"` + Id string `json:"_id"` + } `json:"create"` +} + +type Searchable interface { + models.Club | models.Event +} diff --git a/backend/server/server.go b/backend/server/server.go index 3178afc45..55e272e95 100644 --- a/backend/server/server.go +++ b/backend/server/server.go @@ -23,6 +23,7 @@ import ( "github.com/GenerateNU/sac/backend/integrations" authMiddleware "github.com/GenerateNU/sac/backend/middleware/auth" utilityMiddleware "github.com/GenerateNU/sac/backend/middleware/utility" + search "github.com/GenerateNU/sac/backend/search/base" "github.com/GenerateNU/sac/backend/types" "github.com/GenerateNU/sac/backend/utilities" @@ -91,6 +92,7 @@ func allRoutes(app *fiber.App, routeParams types.RouteParams) { categories.CategoryRoutes(routeParams) events.EventRoutes(routeParams) files.File(routeParams) + search.SearchRoutes(routeParams) oauth.OAuth(routeParams) } diff --git a/backend/tests/api/helpers/dependencies.go b/backend/tests/api/helpers/dependencies.go index ca26f90ba..de47fcfc0 100644 --- a/backend/tests/api/helpers/dependencies.go +++ b/backend/tests/api/helpers/dependencies.go @@ -7,9 +7,7 @@ import ( func NewMockDependencies() *integrations.Integrations { return &integrations.Integrations{ - Search: mocks.NewPineconeMockClient(), - AI: mocks.NewOpenAIMockClient(), - Email: mocks.NewResendMockClient(), - File: mocks.NewAWSMockClient(), + Email: mocks.NewResendMockClient(), + File: mocks.NewAWSMockClient(), } } diff --git a/backend/tests/api/mocks/openai_mock.go b/backend/tests/api/mocks/openai_mock.go deleted file mode 100644 index cef61a620..000000000 --- a/backend/tests/api/mocks/openai_mock.go +++ /dev/null @@ -1,19 +0,0 @@ -package mocks - -import ( - "github.com/GenerateNU/sac/backend/integrations/search" -) - -type OpenAIMockClient struct{} - -func NewOpenAIMockClient() search.AIClientInterface { - return &OpenAIMockClient{} -} - -func (c *OpenAIMockClient) CreateEmbedding(items []search.Searchable) ([]search.Embedding, error) { - return []search.Embedding{}, nil -} - -func (c *OpenAIMockClient) CreateModeration(items []search.Searchable) ([]search.ModerationResult, error) { - return []search.ModerationResult{}, nil -} diff --git a/backend/tests/api/mocks/pinecone_mock.go b/backend/tests/api/mocks/pinecone_mock.go deleted file mode 100644 index 36e3dddf1..000000000 --- a/backend/tests/api/mocks/pinecone_mock.go +++ /dev/null @@ -1,29 +0,0 @@ -package mocks - -import ( - "github.com/GenerateNU/sac/backend/integrations/search" - "gorm.io/gorm" -) - -type PineconeMockClient struct{} - -// Connects to an existing Pinecone index, using the host and keys provided in settings. -func NewPineconeMockClient() search.SearchClientInterface { - return &PineconeMockClient{} -} - -func (c *PineconeMockClient) Upsert(items []search.Searchable) error { - return nil -} - -func (c *PineconeMockClient) Delete(items []search.Searchable) error { - return nil -} - -func (c *PineconeMockClient) Search(item search.Searchable) ([]string, error) { - return []string{}, nil -} - -func (c *PineconeMockClient) Seed(db *gorm.DB) error { - return nil -} diff --git a/backend/tests/search_test.go b/backend/tests/search_test.go deleted file mode 100644 index 8f2c8e4c9..000000000 --- a/backend/tests/search_test.go +++ /dev/null @@ -1,259 +0,0 @@ -package tests - -import ( - "fmt" - "testing" - - "github.com/GenerateNU/sac/backend/config" - "github.com/GenerateNU/sac/backend/constants" - "github.com/GenerateNU/sac/backend/integrations/search" - m "github.com/garrettladley/mattress" - "github.com/h2non/gock" - "github.com/huandu/go-assert" -) - -type MockSearchableStruct struct{} - -func (e *MockSearchableStruct) SearchId() string { - return "testing_uuid" -} - -func (e *MockSearchableStruct) Namespace() string { - return "testing" -} - -func (e *MockSearchableStruct) EmbeddingString() string { - return "testing testing testing" -} - -type mockConfig struct { - Pinecone *config.PineconeSettings - OpenAI *config.OpenAISettings -} - -func newMockConfig() *mockConfig { - pineconeIndexHost := "https://indexHost.com" - pineconeApiKey := "pinecone" - - pineconeIndexHostSecret, err := m.NewSecret(pineconeIndexHost) - if err != nil { - panic(err) - } - - pineconeApiKeySecret, err := m.NewSecret(pineconeApiKey) - if err != nil { - panic(err) - } - - openAIApiKey := "openAI" - - openAIApiKeySecret, err := m.NewSecret(openAIApiKey) - if err != nil { - panic(err) - } - - return &mockConfig{ - Pinecone: &config.PineconeSettings{ - IndexHost: pineconeIndexHostSecret, - APIKey: pineconeApiKeySecret, - }, - OpenAI: &config.OpenAISettings{ - APIKey: openAIApiKeySecret, - }, - } -} - -func TestPineconeUpsertWorks(t *testing.T) { - assert := assert.New(t) - - mockConfig := newMockConfig() - - mockSearchId := (&MockSearchableStruct{}).SearchId() - mockSearchString := (&MockSearchableStruct{}).EmbeddingString() - mockValues := []float32{1.0, 1.0, 1.0, 1.0} - mockNamespace := (&MockSearchableStruct{}).Namespace() - - defer gock.Off() - - gock.New(mockConfig.Pinecone.IndexHost.Expose()). - Post("/vectors/upsert"). - MatchHeader("Api-Key", mockConfig.Pinecone.APIKey.Expose()). - MatchHeader("accept", "application/json"). - MatchHeader("content-type", "application/json"). - MatchType("json"). - JSON(search.PineconeUpsertRequestBody{ - Vectors: []search.Vector{ - { - ID: mockSearchId, - Values: mockValues, - }, - }, - Namespace: mockNamespace, - }). - Reply(200) - - gock.New("https://api.openai.com"). - Post("/v1/embeddings"). - MatchHeader("Authorization", "Bearer "+mockConfig.OpenAI.APIKey.Expose()). - MatchHeader("content-type", "application/json"). - MatchType("json"). - JSON(search.CreateEmbeddingRequestBody{ - Input: []string{mockSearchString}, - Model: "text-embedding-ada-002", - }). - Reply(200). - JSON(search.CreateEmbeddingResponseBody{ - Data: []search.Embedding{ - { - Embedding: mockValues, - }, - }, - }) - - client := search.NewPineconeClient(search.NewOpenAIClient(*mockConfig.OpenAI), *mockConfig.Pinecone) - err := client.Upsert([]search.Searchable{&MockSearchableStruct{}}) - assert.Equal(err, nil) -} - -func TestPineconeDeleteWorks(t *testing.T) { - assert := assert.New(t) - - mockConfig := newMockConfig() - - mockSearchId := (&MockSearchableStruct{}).SearchId() - mockNamespace := (&MockSearchableStruct{}).Namespace() - - defer gock.Off() - - gock.New(mockConfig.Pinecone.IndexHost.Expose()). - Post("/vectors/delete"). - MatchHeader("Api-Key", mockConfig.Pinecone.APIKey.Expose()). - MatchHeader("accept", "application/json"). - MatchHeader("content-type", "application/json"). - MatchType("json"). - JSON(search.PineconeDeleteRequestBody{ - Namespace: mockNamespace, - IDs: []string{mockSearchId}, - DeleteAll: false, - }). - Reply(200) - - client := search.NewPineconeClient(search.NewOpenAIClient(*mockConfig.OpenAI), *mockConfig.Pinecone) - err := client.Delete([]search.Searchable{&MockSearchableStruct{}}) - assert.Equal(err, nil) -} - -func TestPineconeSearchWorks(t *testing.T) { - assert := assert.New(t) - - mockConfig := newMockConfig() - - mockSearchId := (&MockSearchableStruct{}).SearchId() - mockSearchString := (&MockSearchableStruct{}).EmbeddingString() - mockValues := []float32{1.0, 1.0, 1.0, 1.0} - mockNamespace := (&MockSearchableStruct{}).Namespace() - - defer gock.Off() - - gock.New(mockConfig.Pinecone.IndexHost.Expose()). - Post("/query"). - MatchHeader("Api-Key", mockConfig.Pinecone.APIKey.Expose()). - MatchHeader("accept", "application/json"). - MatchHeader("content-type", "application/json"). - MatchType("json"). - JSON(search.PineconeSearchRequestBody{ - IncludeValues: false, - IncludeMetadata: false, - TopK: constants.TOP_K_RESULTS, - Vector: mockValues, - Namespace: mockNamespace, - }). - Reply(200). - JSON(search.PineconeSearchResponseBody{ - Matches: []search.Match{ - { - Id: mockSearchId, - Score: 1.0, - Values: mockValues, - }, - }, - Namespace: mockNamespace, - }) - - gock.New("https://api.openai.com"). - Post("/v1/embeddings"). - MatchHeader("Authorization", fmt.Sprintf("Bearer %s", mockConfig.OpenAI.APIKey.Expose())). - MatchHeader("content-type", "application/json"). - MatchType("json"). - JSON(search.CreateEmbeddingRequestBody{ - Input: []string{mockSearchString}, - Model: "text-embedding-ada-002", - }). - Reply(200). - JSON(search.CreateEmbeddingResponseBody{ - Data: []search.Embedding{ - { - Embedding: []float32{1.0, 1.0, 1.0, 1.0}, - }, - }, - }) - - gock.New("https://api.openai.com"). - Post("/v1/moderations"). - MatchHeader("Authorization", fmt.Sprintf("Bearer %s", mockConfig.OpenAI.APIKey.Expose())). - MatchHeader("Content-Type", "application/json"). - MatchType("json"). - JSON(search.CreateModerationRequestBody{ - Input: []string{ - (&MockSearchableStruct{}).EmbeddingString(), - }, - Model: "text-moderation-stable", - }). - Reply(200). - JSON(search.CreateModerationResponseBody{ - Results: []search.ModerationResult{ - { - Flagged: false, - }, - }, - }) - - client := search.NewPineconeClient(search.NewOpenAIClient(*mockConfig.OpenAI), *mockConfig.Pinecone) - ids, err := client.Search(&MockSearchableStruct{}) - assert.Equal(err, nil) - assert.Equal(len(ids), 1) - assert.Equal(ids[0], (&MockSearchableStruct{}).SearchId()) -} - -func TestOpenAIEmbeddingWorks(t *testing.T) { - assert := assert.New(t) - - mockConfig := newMockConfig() - - mockSearchString := (&MockSearchableStruct{}).EmbeddingString() - - defer gock.Off() - - gock.New("https://api.openai.com"). - Post("/v1/embeddings"). - MatchHeader("Authorization", fmt.Sprintf("Bearer %s", mockConfig.OpenAI.APIKey.Expose())). - MatchHeader("content-type", "application/json"). - MatchType("json"). - JSON(search.CreateEmbeddingRequestBody{ - Input: []string{mockSearchString}, - Model: "text-embedding-ada-002", - }). - Reply(200). - JSON(search.CreateEmbeddingResponseBody{ - Data: []search.Embedding{ - { - Embedding: []float32{1.0, 1.0, 1.0, 1.0}, - }, - }, - }) - - client := search.NewOpenAIClient(*mockConfig.OpenAI) - vector, err := client.CreateEmbedding([]search.Searchable{&MockSearchableStruct{}}) - assert.Equal(err, nil) - assert.Equal(vector, []search.Embedding{{Embedding: []float32{1.0, 1.0, 1.0, 1.0}}}) -} diff --git a/backend/utilities/json.go b/backend/utilities/json.go new file mode 100644 index 000000000..7841c2a08 --- /dev/null +++ b/backend/utilities/json.go @@ -0,0 +1,12 @@ +package utilities + +import "encoding/json" + +func ToJsonString(p interface{}) (string, error) { + jsonData, err := json.Marshal(p) + if err != nil { + return "", err + } + + return string(jsonData), nil +} diff --git a/cli/cmd/run.go b/cli/cmd/run.go index 4a125873f..09cc8eda5 100644 --- a/cli/cmd/run.go +++ b/cli/cmd/run.go @@ -20,8 +20,7 @@ func init() { runCmd.AddCommand(runFeCmd) runCmd.AddCommand(runBeCmd) runBeCmd.Flags().BoolP("migrate", "m", false, "Specify if you want to only perform the database migration") - runBeCmd.Flags().BoolP("seed-pinecone", "s", false, "Specify if you want to only perform the pinecone database seeding") - runBeCmd.Flags().BoolP("connect-to-pinecone", "c", false, "Connect to a real Pinecone instance instead of mock") + runBeCmd.Flags().BoolP("seed-search", "s", false, "Specify if you want to perform the search seeding") runFeCmd.AddCommand(runWebCmd) runFeCmd.AddCommand(runMobileCmd) @@ -38,8 +37,7 @@ var runBeCmd = &cobra.Command{ Args: cobra.NoArgs, Run: func(cmd *cobra.Command, args []string) { migrate, _ := cmd.Flags().GetBool("migrate") - seedPinecone, _ := cmd.Flags().GetBool("seed-pinecone") - connectToPinecone, _ := cmd.Flags().GetBool("connect-to-pinecone") + seedSearch, _ := cmd.Flags().GetBool("seed-search") if migrate { err := helpers.Execute(exec.Command("go", "run", "main.go", "--only-migrate"), helpers.BACKEND_DIR) @@ -49,24 +47,8 @@ var runBeCmd = &cobra.Command{ } } - if seedPinecone { - err := helpers.Execute(exec.Command("go", "run", "main.go", "--seed-pinecone"), helpers.BACKEND_DIR) - if err != nil { - fmt.Println(err) - os.Exit(1) - } - } - - if connectToPinecone { - err := helpers.Execute(exec.Command("go", "run", "main.go", "--connect-to-pinecone"), helpers.BACKEND_DIR) - if err != nil { - fmt.Println(err) - os.Exit(1) - } - } - - if !migrate && !seedPinecone && !connectToPinecone { - err := helpers.Execute(exec.Command("go", "run", "main.go"), helpers.BACKEND_DIR) + if seedSearch { + err := helpers.Execute(exec.Command("go", "run", "main.go", "--seed-search"), helpers.BACKEND_DIR) if err != nil { fmt.Println(err) os.Exit(1) diff --git a/cli/cmd/pinecone.go b/cli/cmd/search.go similarity index 65% rename from cli/cmd/pinecone.go rename to cli/cmd/search.go index 768571e00..a290fbf4a 100644 --- a/cli/cmd/pinecone.go +++ b/cli/cmd/search.go @@ -9,11 +9,11 @@ import ( "github.com/spf13/cobra" ) -var seedPineconeCmd = &cobra.Command{ - Use: "seed-pinecone", - Short: "Seed Pinecone", +var seedSearchCmd = &cobra.Command{ + Use: "seed-search", + Short: "Seed Search", Run: func(cmd *cobra.Command, args []string) { - err := helpers.Execute(exec.Command("go", "run", "main.go", "seed-pinecone"), helpers.BACKEND_DIR) + err := helpers.Execute(exec.Command("go", "run", "main.go", "seed-search"), helpers.BACKEND_DIR) if err != nil { fmt.Println(err) os.Exit(1) @@ -22,5 +22,5 @@ var seedPineconeCmd = &cobra.Command{ } func init() { - rootCmd.AddCommand(seedPineconeCmd) + rootCmd.AddCommand(seedSearchCmd) } diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..bc9ff62c3 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,43 @@ +services: + opensearch-node1: + image: opensearchproject/opensearch:latest + container_name: opensearch-node1 + environment: + - cluster.name=opensearch-cluster + - node.name=opensearch-node1 + - discovery.type=single-node + - bootstrap.memory_lock=true # along with the memlock settings below, disables swapping + - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m" # minimum and maximum Java heap size, recommend setting both to 50% of system RAM + - DISABLE_SECURITY_PLUGIN=true # + ulimits: + memlock: + soft: -1 + hard: -1 + nofile: + soft: 65536 # maximum number of open files for the OpenSearch user, set to at least 65536 on modern systems + hard: 65536 + volumes: + - opensearch-data1:/usr/share/opensearch/data + ports: + - 9200:9200 + - 9600:9600 # required for Performance Analyzer + networks: + - opensearch-net + opensearch-dashboards: + image: opensearchproject/opensearch-dashboards:latest + container_name: opensearch-dashboards + ports: + - 5601:5601 + expose: + - "5601" + environment: + OPENSEARCH_HOSTS: '["http://opensearch-node1:9200"]' + DISABLE_SECURITY_DASHBOARDS_PLUGIN: true + networks: + - opensearch-net + +volumes: + opensearch-data1: + +networks: + opensearch-net: \ No newline at end of file diff --git a/go.work.sum b/go.work.sum index a07a013cf..d9644ff83 100644 --- a/go.work.sum +++ b/go.work.sum @@ -373,6 +373,10 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgf github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= +github.com/h2non/gock v1.2.0 h1:K6ol8rfrRkUOefooBC8elXoaNGYkpp7y2qcxGG6BzUE= +github.com/h2non/gock v1.2.0/go.mod h1:tNhoxHYW2W42cYkYb1WqzdbYIieALC99kpYr7rH/BQk= +github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw= +github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed h1:5upAirOpQc1Q53c0bnx2ufif5kANL7bfZWcc6VJWJd8= github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= github.com/hashicorp/consul/api v1.25.1 h1:CqrdhYzc8XZuPnhIYZWH45toM0LB9ZeYr/gvpLVI3PE= @@ -466,6 +470,8 @@ github.com/mcnijman/go-emailaddress v1.1.1/go.mod h1:5whZrhS8Xp5LxO8zOD35BC+b76k github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= github.com/ktrysmt/go-bitbucket v0.6.4 h1:C8dUGp0qkwncKtAnozHCbbqhptefzEd1I0sfnuy9rYQ= github.com/ktrysmt/go-bitbucket v0.6.4/go.mod h1:9u0v3hsd2rqCHRIpbir1oP7F58uo5dq19sBYvuMoyQ4= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/lyft/protoc-gen-star/v2 v2.0.3/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= github.com/markbates/pkger v0.15.1 h1:3MPelV53RnGSW07izx5xGxl4e/sdRD6zqseIk0rMASY= github.com/markbates/pkger v0.15.1/go.mod h1:0JoVlrol20BSywW79rN3kdFFsE5xYM+rSCQDXbLhiuI= @@ -551,6 +557,8 @@ github.com/sahilm/fuzzy v0.1.1/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8 github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/sagikazarmark/crypt v0.17.0 h1:ZA/7pXyjkHoK4bW4mIdnCLvL8hd+Nrbiw7Dqk7D4qUk= github.com/sagikazarmark/crypt v0.17.0/go.mod h1:SMtHTvdmsZMuY/bpZoqokSoChIrcJ/epOxZN58PbZDg= +github.com/sahilm/fuzzy v0.1.1 h1:ceu5RHF8DGgoi+/dR5PsECjCDH1BE3Fnmpo7aVXOdRA= +github.com/sahilm/fuzzy v0.1.1/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y= github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= github.com/segmentio/encoding v0.4.0 h1:MEBYvRqiUB2nfR2criEXWqwdY6HJOUrCn5hboVOVmy8= @@ -649,6 +657,30 @@ go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTV go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= +golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= +golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= +golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= +golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= +golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= +golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= @@ -670,22 +702,17 @@ golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/telemetry v0.0.0-20240208230135-b75ee8823808/go.mod h1:KG1lNk5ZFNssSZLrpVb4sMXKMpGwGXOxSG3rnu2gZQQ= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2 h1:IRJeR9r1pYWsHKTRe/IInb7lYvbBVIqOgsX/u0mbOWY= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= @@ -697,6 +724,15 @@ golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= diff --git a/mock_data/MOCK_DATA_OUTPUT.json b/mock_data/MOCK_DATA_OUTPUT.json new file mode 100644 index 000000000..cbf95e3e1 --- /dev/null +++ b/mock_data/MOCK_DATA_OUTPUT.json @@ -0,0 +1,4609 @@ +{ + "category_uuids": { + "PreProfessional": "3c3b9be9-ba83-48b3-9275-9ccd0bac7352", + "CulturalAndIdentity": "07bda994-8460-4f4e-bd11-4d742bdb2347", + "ArtsAndCreativity": "542da018-5775-41e1-96c2-d41c70beafef", + "SportsAndRecreation": "2191c4ed-4ee4-42ad-b684-41df583c80fb", + "ScienceAndTechnology": "c3569d1e-a9ad-4e11-8f64-516133cd0b5a", + "CommunityServiceAndAdvocacy": "cb22c8e9-294f-4086-9a35-1948906b56f2", + "MediaAndCommunication": "c32f16a2-343e-411e-bf31-ac83c0f4a29c" + }, + "tag_uuids": { + "Premed": "4913e66d-800e-4f62-92c2-ded2f2f1bcfe", + "Prelaw": "a68d7ff4-e3e0-415f-aebc-5b2c1a414d8b", + "Judaism": "3fc7aeae-73fa-4c47-ba2c-e417add348d4", + "Christianity": "e169658c-ebcd-44c4-b2eb-3895c0f5d874", + "Hinduism": "6390ea7e-8a35-44df-a050-d1f586ff198a", + "Islam": "b8ffc6c3-7cdf-46b9-9ea9-f2a85c46a36f", + "LatinAmerica": "2ad521ef-e7cc-4e03-ac85-18c88176e623", + "AfricanAmerican": "1375675d-bf28-48c3-a5e8-205dd78ef995", + "AsianAmerican": "4f272b5e-e6e0-4729-b132-004877729956", + "LGBTQ": "a7147924-640d-4dd9-8bb4-c774ceba6ef8", + "PerformingArts": "9f436d05-2a55-44bb-b2e0-814f0351248c", + "VisualArts": "12a91548-0d33-4bd3-a509-1cbff0fed8de", + "CreativeWriting": "0c8d11c8-79c7-4ece-9db2-c145a611c392", + "Music": "99e90f2c-34d5-4639-9b4a-f427286290be", + "Soccer": "8f803df5-e3f6-4713-bbe1-7f1eb254fcf5", + "Hiking": "3073c948-6f4a-42be-8938-7fec0f8cb44e", + "Climbing": "87d56795-5db2-4aca-90e8-f6a5b6ef8812", + "Lacrosse": "6d234563-bdaa-4daa-b9ac-1c9e2df53cfe", + "Mathematics": "8a2bc286-a1c7-4700-86ee-28cf5eb2d947", + "Physics": "bfe4c2a2-82d8-489c-9316-74409ae40980", + "Biology": "d990bd82-ba96-4a7b-90dd-a69bab5f370f", + "Chemistry": "4472d5e4-da79-4f33-9c6f-2aace2a1fd1a", + "EnvironmentalScience": "7ed9a86a-cc0a-4046-8628-b8fcee787975", + "Geology": "9dd9dcb3-8b0c-441e-82c2-0a99c6d475f2", + "Neuroscience": "27555998-ba8e-402a-b957-97986cacb03c", + "Psychology": "70f936e1-a8ab-4134-a642-9868e9b1ae99", + "SoftwareEngineering": "699d2a6a-47e1-4ada-8a23-67b82bc04b83", + "ArtificialIntelligence": "17ab7c95-b5f6-4b58-8a69-ba8293a4869b", + "DataScience": "15290cd3-b99a-4d24-aa89-b13ab0717d57", + "MechanicalEngineering": "52b244f4-5395-4d51-b48a-38c75f0ff803", + "ElectricalEngineering": "29451bb4-8f83-401a-9e8d-1d7986079add", + "IndustrialEngineering": "43c379e3-f795-41ae-a01f-7fa7de2e52d4", + "Volunteerism": "b86fb4f1-04f9-4458-8eeb-26e55bf45619", + "EnvironmentalAdvocacy": "6148ee04-f1e2-4645-9d17-6afd2581a7fb", + "HumanRights": "62719fb3-8b3a-4a85-ab05-095d0f1c67ca", + "CommunityOutreach": "3e6b21ac-ee27-4c5d-b8b3-9c8aaeaa23ba", + "Journalism": "496e32b5-dff7-4998-aeba-fa50657bb5db", + "Broadcasting": "35cc2cc2-1de9-4e30-bba9-08424feec863", + "Film": "b532b3e1-f32a-4115-bd3a-a9a1ec49d10f", + "PublicRelations": "0825e901-5807-478c-8e82-98ef70bd3dd1" + }, + "tags_to_categories": { + "Premed": "PreProfessional", + "Prelaw": "PreProfessional", + "Judaism": "CulturalAndIdentity", + "Christianity": "CulturalAndIdentity", + "Hinduism": "CulturalAndIdentity", + "Islam": "CulturalAndIdentity", + "LatinAmerica": "CulturalAndIdentity", + "AfricanAmerican": "CulturalAndIdentity", + "AsianAmerican": "CulturalAndIdentity", + "LGBTQ": "CulturalAndIdentity", + "PerformingArts": "ArtsAndCreativity", + "VisualArts": "ArtsAndCreativity", + "CreativeWriting": "ArtsAndCreativity", + "Music": "ArtsAndCreativity", + "Soccer": "SportsAndRecreation", + "Hiking": "SportsAndRecreation", + "Climbing": "SportsAndRecreation", + "Lacrosse": "SportsAndRecreation", + "Mathematics": "ScienceAndTechnology", + "Physics": "ScienceAndTechnology", + "Biology": "ScienceAndTechnology", + "Chemistry": "ScienceAndTechnology", + "EnvironmentalScience": "ScienceAndTechnology", + "Geology": "ScienceAndTechnology", + "Neuroscience": "ScienceAndTechnology", + "Psychology": "ScienceAndTechnology", + "SoftwareEngineering": "ScienceAndTechnology", + "ArtificialIntelligence": "ScienceAndTechnology", + "DataScience": "ScienceAndTechnology", + "MechanicalEngineering": "ScienceAndTechnology", + "ElectricalEngineering": "ScienceAndTechnology", + "IndustrialEngineering": "ScienceAndTechnology", + "Volunteerism": "CommunityServiceAndAdvocacy", + "EnvironmentalAdvocacy": "CommunityServiceAndAdvocacy", + "HumanRights": "CommunityServiceAndAdvocacy", + "CommunityOutreach": "CommunityServiceAndAdvocacy", + "Journalism": "MediaAndCommunication", + "Broadcasting": "MediaAndCommunication", + "Film": "MediaAndCommunication", + "PublicRelations": "MediaAndCommunication" + }, + "clubs": [ + { + "id": "9231a677-ee63-4fae-a3ab-411b74a91f09", + "name": "(Tentative ) Linguistics Club", + "preview": "Linguistics Club seeks to provide extra-curricular engagement for students of all backgrounds who are interested in linguistics. Our primary goal is to encourage members to connect more with linguistics and with each other!", + "description": "Linguistics Club seeks to provide extra-curricular engagement for students of all backgrounds who are interested in linguistics, regardless of whether they are majors/combined majors, minors, hobbyists, or completely new to the field. Linguistics Club aims to host guest speakers, attend conferences, and coordinate a variety of other outings. We also hold more casual and social meetings, such as the Transcription Bee (a non-competitive bee dedicated to phonetic transcription), game nights, and study breaks. Towards the end of a semester, we aim to provide additional guidance for students in the linguistics program by offering an avenue to practice presenting research posters ahead of fairs, as well as offering informal peer advising on course registration. The club’s Discord serves as a digital platform for all students who are interested in linguistics to connect and is extremely active. ", + "num_members": 807, + "is_recruiting": "FALSE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "application", + "tags": [ + "PerformingArts", + "CreativeWriting", + "CommunityOutreach", + "HumanRights", + "VisualArts" + ] + }, + { + "id": "5a22f67a-506f-447d-b014-424cab9adc14", + "name": "Adopted Student Organization", + "preview": "Adopted Student Organization is a safe space for adoptees to connect over shared and diverse experiences.", + "description": "Our mission is to foster a safe space for adoptees to tell their adoption stories and express their feelings, opinions, and thoughts about adoption and other related topics without harsh judgment from others. In addition, we aim to educate anyone interested in adoption-related topics. \r\nOur goals are to represent all adoptees who feel like the adoption narrative has been mistold and educate non-adoptees about the experience of adoption. Our long-standing future mission is for the next generation of adoptees and adopted parents to have a better understanding of each other. In the end, we want to inspire adoptees to be proud of being a part of the adoptee community.", + "num_members": 933, + "is_recruiting": "TRUE", + "recruitment_cycle": "always", + "recruitment_type": "unrestricted", + "tags": [ + "HumanRights", + "CommunityOutreach", + "CreativeWriting", + "Psychology", + "Volunteerism" + ] + }, + { + "id": "e90b4ec8-1856-4b40-8c40-e50b694d10de", + "name": "Automotive Club", + "preview": "Automotive Club is a welcoming space for automotive enthusiasts of all levels. Enjoy outings to car meets, go-kart tracks, virtual sim racing, hands-on activities, and talks by experts in the industry. Join us for all things cars!", + "description": "The Automotive Club is a vibrant community that warmly embraces automotive enthusiasts at every stage of their journey. Whether you're a seasoned car aficionado or just starting to explore the thrilling world of automobiles, our club is the perfect place for you. Experience the excitement of attending thrilling outings to car meets, exhilarating go-kart tracks, engaging virtual sim racing events, and immersive hands-on activities. Immerse yourself in enlightening talks by industry experts that cover a wide range of automotive topics. Join us to foster your passion for all things cars in a friendly and inclusive environment!", + "num_members": 279, + "is_recruiting": "FALSE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "unrestricted", + "tags": [ + "Automotive", + "Engineering", + "CommunityOutreach", + "Volunteerism" + ] + }, + { + "id": "c79371ac-d558-463a-b73a-b8b3d642f667", + "name": "Baltic Northeastern Association", + "preview": "The Baltic Northeastern Association serves as a home away from home for students from the Baltic countries, as well as an opportunity to share Baltic culture with interested students. ", + "description": "The Baltic Northeastern Association serves as a home away from home for students from the Baltic countries, as well as an opportunity to share Baltic culture with interested students. We will host weekly meetings that can range from cooking sessions, discussions of Baltic culture and language, sharing Baltic traditional dancing and music, and more. ", + "num_members": 1007, + "is_recruiting": "FALSE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "application", + "tags": [ + "Cultural", + "CommunityOutreach", + "International", + "PerformingArts", + "Language" + ] + }, + { + "id": "b6c13342-3ddf-41b6-a3a0-a6d8f1878933", + "name": "Bangladeshi Organization of Networking, Diversity, Heritage, Unity and Support", + "preview": "The BONDHUS is dedicated to fostering a sense of home for Bangladeshi students and those interested in Bangladeshi culture, as well as celebrating the rich cultural heritage of Bangladesh.", + "description": "The BONDHUS is dedicated to fostering a sense of home for Bangladeshi students and those interested in Bangladeshi culture. We strive to provide mentorship, build cultural awareness, and offer assistance with college admissions, including hosting events in Bangladesh related to Northeastern University. Our mission is to create an inclusive community that celebrates and promotes the rich heritage of Bangladesh while providing support and growth opportunities for our members. Our target membership includes Bangladeshi international undergraduates and graduates, Bangladeshi diaspora-born undergraduates and graduates, and non-Bangladeshi undergraduates and graduates interested in our culture and mission. We plan to host a wide range of events and initiatives, including:\r\nCultural Celebrations: We will honor significant Bangladeshi events such as Pohela Boishakh (New Year's Day), Ekushe February (International Mother Language Day), and Shadhinota Dibosh (Independence Day).\r\nFestive Gatherings: Observing cultural festivals like Eid and Puja, allowing members to share these joyous occasions together.\r\nFood-Based Events: Showcasing the vibrant and diverse Bangladeshi cuisine through cooking demonstrations, food festivals, and shared meals.\r\nCollaborations with Other BSAs: Building strong connections with other Bangladesh Student Associations to enhance cultural exchange and support.\r\nFundraising Initiatives: Organizing events to support causes related to education and community development in Bangladesh.\r\nIn conclusion, the BONDHUS aims to be a vibrant hub that nurtures a sense of belonging, celebrates cultural identity, and provides avenues for personal and professional growth. Through our planned activities and initiatives, we hope to create a dynamic and supportive community that connects Bangladesh with the broader academic landscape.", + "num_members": 301, + "is_recruiting": "TRUE", + "recruitment_cycle": "always", + "recruitment_type": "application", + "tags": [ + "AsianAmerican", + "CulturalCelebrations", + "FoodBasedEvents", + "Collaborations", + "CommunityOutreach" + ] + }, + { + "id": "0a053cdf-f824-4854-9fa8-a326fa36f779", + "name": "Binky Patrol", + "preview": "Binky Patrol is club that makes blankets by hand to donate to children in hospitals and shelters", + "description": "Binky Patrol is a club that makes blankets by hand to donate to children in hospitals and shelters - if you want to get involved, join the slack with the link below!\r\nhttps://join.slack.com/t/binkypatrolnu/shared_invite/zt-2aiwtfdnb-Kmi~pPtsE9_xPTxrwF3ZOQ", + "num_members": 410, + "is_recruiting": "TRUE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "unrestricted", + "tags": [ + "Volunteerism", + "HumanRights", + "CommunityOutreach", + "VisualArts", + "CreativeWriting" + ] + }, + { + "id": "0df7841d-2269-461f-833f-d6f8b7e98fdf", + "name": "Biokind Analytics Northeastern", + "preview": "Biokind Analytics Northeastern brings together undergraduate data scientists and statisticians across the world to apply classroom learning for meaningful, positive societal impact in their communities.", + "description": "Biokind Analytics Northeastern is a local chapter of the larger nonprofit organization, Biokind Analytics. The club aims to provide Northeastern students with the opportunity to apply data analysis skills and learnings to further the mission of local healthcare non-profit organizations in the Boston region. Our goal is to promote the development of relationships between Northeastern students and healthcare non-profits to better contribute to our local community. ", + "num_members": 253, + "is_recruiting": "TRUE", + "recruitment_cycle": "fall", + "recruitment_type": "unrestricted", + "tags": [ + "DataScience", + "Volunteerism", + "CommunityOutreach", + "Healthcare" + ] + }, + { + "id": "0a7c612f-352a-47cd-b07d-c4a8cbe65ff9", + "name": "Black Graduate Student Association ", + "preview": "The purpose of Black Graduate Student Association is to enhance scholarly and professional development of graduate students at Northeastern through networking, seminars, forums, workshops, and social gatherings in the Boston Area.", + "description": "Welcome to the Black Graduate Student Association! Our club at Northeastern is dedicated to supporting the growth and success of graduate students by providing valuable opportunities for networking, learning, and socializing. We foster a community that values scholarly and professional development through engaging seminars, thought-provoking forums, skill-building workshops, and fun social gatherings in the vibrant Boston Area. Join us to connect with fellow students, expand your horizons, and make lasting memories as part of our inclusive and supportive community.", + "num_members": 754, + "is_recruiting": "TRUE", + "recruitment_cycle": "fall", + "recruitment_type": "application", + "tags": [ + "AfricanAmerican", + "CommunityOutreach", + "Networking", + "ProfessionalDevelopment" + ] + }, + { + "id": "5e746d5d-cbe8-4caa-ba6e-93875a6ab23e", + "name": "Black Pre-Law Association", + "preview": "BPLA's purpose is to nurture a supportive and empowering community for Black undergraduate students interested in pursuing a career in the legal field. ", + "description": "BPLA's purpose is to nurture a supportive and empowering community for Black undergraduate students interested in pursuing a career in the legal field. We aim to encourage dialogue on social justice/legal issues, academic excellence, personal growth, and professional development.", + "num_members": 405, + "is_recruiting": "TRUE", + "recruitment_cycle": "always", + "recruitment_type": "application", + "tags": [ + "Prelaw", + "AfricanAmerican", + "CommunityOutreach", + "HumanRights" + ] + }, + { + "id": "94aff56b-fa20-46e0-8b28-0e6bbb9e2006", + "name": "Brazilian Jiu Jitsu at Northeastern University", + "preview": "BJJ is primarily a ground based martial art focusing on the submission of the opponent through principles of angles, leverage, pressure and timing, in order to achieve submission of the opponent in a skillful and technical way.\r\n", + "description": "Join our Discord: https://discord.gg/3RuzAtZ4WS\r\nFollow us on Instagram: @northeasternbjj", + "num_members": 468, + "is_recruiting": "FALSE", + "recruitment_cycle": "fall", + "recruitment_type": "unrestricted", + "tags": [ + "BrazilianJiuJitsu", + "PhysicalFitness", + "CommunityOutreach" + ] + }, + { + "id": "024650bb-873a-4ca9-bd4d-d812cf855878", + "name": "Business of Entertainment ", + "preview": "Our goal is to educate and empower students interested in the intersection between the entertainment and business industry through guest speaker sessions, workshops, and panels!", + "description": "Welcome to the Business of Entertainment club! Our goal is to educate and empower students interested in the dynamic intersection between the entertainment and business industry. Join us for engaging guest speaker sessions, interactive workshops, and insightful panels that provide a platform for learning, networking, and exploring opportunities in this exciting field. Whether you're passionate about music, film, television, or the arts, our club is the perfect place to enhance your knowledge, connect with like-minded peers, and dive into the world of entertainment business!", + "num_members": 665, + "is_recruiting": "FALSE", + "recruitment_cycle": "spring", + "recruitment_type": "application", + "tags": [ + "Film", + "Music", + "VisualArts", + "Business", + "Entertainment" + ] + }, + { + "id": "0b605bba-8526-40b7-be72-b858495c2ae1", + "name": "Color Guard", + "preview": "A non-competitive Winter Guard team that meets once a week to practice new skills and meet members in the community. Performance opportunities will be made available throughout the year if members show interest and want to perform. ", + "description": "Color Guard is a Dance-based activity that involves the use of equipment including but not limited to Rifles, Sabres and Flags. Members of Color Guards, referred to as spinners, work throughout the season to put together a themed show/performance with theme-based equipment, uniforms and floor tarp. This organization aims to introduce new students into the activity and provide a space for experienced members to come and practice and try new skills. Throughout the year, members interested in performing will put together a short winter guard show. ", + "num_members": 640, + "is_recruiting": "TRUE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "unrestricted", + "tags": [ + "PerformingArts", + "CreativeWriting", + "Music" + ] + }, + { + "id": "5d6ffac7-238a-4569-95a6-1e3eec623555", + "name": "Community Palette", + "preview": "We aim to provide art programs for individuals within underprivileged, clinical, or community centers that may use art to better their mental health. In doing so, we hope to address the issue of limited wellness services in clinical and community cen", + "description": "The purpose of this organization is to expand creative and visual arts for individuals within underprivileged, clinical, or community centers in Boston that may use art as a way to cope from stress or require it to better their mental health and wellbeing. In doing so, we hope to destigmatize using the arts as a coping mechanism and foster friendships to address the issue of limited wellness services within clinical settings and community centers. We hope to bring together Northeastern students who are eager to get involved within our surrounding neighborhoods and have a strong desire to help alleviate stresses others may face through helping them escape with visual art projects and group activities. ", + "num_members": 14, + "is_recruiting": "TRUE", + "recruitment_cycle": "spring", + "recruitment_type": "unrestricted", + "tags": [ + "VisualArts", + "CommunityOutreach", + "Psychology", + "CreativeWriting" + ] + }, + { + "id": "c3cd328c-4c13-4d7c-9741-971b3633baa5", + "name": "ConnectED Research ", + "preview": "ConnectEd Research promotes educational equality, cultivates scholars, and hosts events to connect students and professors, fostering an inclusive academic community. We aim to bridge gaps in resources, empowering all students to excel in academia.\r\n", + "description": "ConnectEd Research is an inclusive community that champions educational equality and supports students in their academic journey. Through a variety of engaging events and scholarly activities, we create opportunities for students to connect with professors and peers, fostering a network of support and collaboration. Our mission is to bridge gaps in resources and empower all students to succeed in academia by providing a nurturing environment that cultivates scholars and encourages exploration of diverse perspectives.", + "num_members": 202, + "is_recruiting": "TRUE", + "recruitment_cycle": "always", + "recruitment_type": "unrestricted", + "tags": [ + "EducationEquality", + "CommunitySupport", + "AcademicNetworking", + "Diversity", + "Collaboration", + "Empowerment" + ] + }, + { + "id": "f3eb7ae8-dc8f-445b-b0c7-854a96814799", + "name": "Crystal Clear", + "preview": "Crystal Clear is an inclusive community for students interested in Paganism, Spirituality, Astrology, crystals, tarot, and more. We provide a safe and supportive environment to explore and discuss Paganism, Neopaganism and Spirituality.", + "description": "Crystal Clear is an inclusive community for students interested in Paganism, Spirituality, Astrology, crystals, tarot, and more. We explore the history and current context of various Pagan beliefs and the incorporation of Pagan practices into our own. By facilitating meaningful discussions that promote cultural awareness and critical thinking, and providing resources and support, we encourage community building within the Spirituality space on campus, and overall provide a communal space to practice and learn about (Neo)Paganism.", + "num_members": 1010, + "is_recruiting": "FALSE", + "recruitment_cycle": "always", + "recruitment_type": "application", + "tags": [ + "Spirituality", + "Astrology", + "Crystals", + "Tarot", + "CommunityBuilding", + "CulturalAwareness" + ] + }, + { + "id": "939653b8-8082-483a-9b24-8d4876061ae7", + "name": "Dermatology Interest Society", + "preview": "DermIS is a collaborative group for Northeastern students interested in skincare and dermatology. At our regular meetings, we discuss and sample various skincare products, chat with experts in the field, and learn about dermatological conditions.", + "description": "DermIS is a community hub created for skincare enthusiasts and budding dermatologists at Northeastern University. Our vibrant club invites members to dive deep into the world of skincare through interactive meetings where we explore a range of products, engage in insightful conversations with industry professionals, and unravel the mysteries behind various dermatological conditions. Whether you're looking to revamp your skincare routine or pursue a career in dermatology, DermIS is the perfect place to embark on an exciting journey towards healthier skin and deeper knowledge.", + "num_members": 101, + "is_recruiting": "TRUE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "unrestricted", + "tags": [ + "Skincare", + "Health", + "Dermatology", + "Beauty", + "CareerDevelopment", + "Community", + "Education" + ] + }, + { + "id": "7f0b87df-c5dd-4772-bd29-51083f9cad1a", + "name": "Dominican Student Association ", + "preview": "The Dominican Student Association is dedicated to serving as a cultural organization that honors and commemorates both the Dominican and Dominican-American heritage. ", + "description": "The Dominican Student Association is dedicated to serving as a cultural organization that honors and commemorates both the Dominican and Dominican-American heritage. Our aim is to provide a safe and inclusive space for individuals who identify as Dominican and those who are eager to explore the rich Dominican culture. At DSA, we prioritize the integration of people from diverse backgrounds and identities, fostering an environment where everyone feels embraced and valued.", + "num_members": 643, + "is_recruiting": "TRUE", + "recruitment_cycle": "spring", + "recruitment_type": "application", + "tags": [ + "LatinAmerica", + "LGBTQ", + "CommunityOutreach", + "CulturalOrganization" + ] + }, + { + "id": "201a41ce-3982-4d12-8c5e-822a260bec22", + "name": "Emerging Markets Club ", + "preview": "The Emerging Markets Club is an organization with the mission to educate and collaborate with students to teach them more about the increasing relevance and importance of emerging markets within the economic and financial world. ", + "description": "The Emerging Markets Club is an organization with the mission to educate and collaborate with students to teach them more about the increasing relevance and importance of emerging markets within the economic and financial world. We seek to accomplish this goal through providing students with unique opportunities to widen their understanding of emerging markets. Some of these opportunities include exclusive speaker events, hosted in collaboration with other adjacent organizations, engaging lectures hosted by club leaders and members, networking events to put members in touch with real players in the emerging markets world, and researching opportunities to deepen one's understanding of emerging markets experientially. ", + "num_members": 816, + "is_recruiting": "FALSE", + "recruitment_cycle": "always", + "recruitment_type": "application", + "tags": [ + "Economics", + "InternationalRelations", + "Networking", + "Research" + ] + }, + { + "id": "b6de04c0-93a5-4717-8e4d-5c2844930dfe", + "name": "First Generation Investors Club of Northeastern University", + "preview": "FGI Northeastern is the Northeastern University chapter of a non-profit 501(c)(3) organization that teaches high school students in underserved communities the power of investing and provides students with real money to invest.", + "description": "First Generation Investors Club of Northeastern University (FGI Northeastern) is the Northeastern University chapter of First Generation Investors, a non-profit 501(c)(3) organization. Our program leverages a network of intelligent and civic-minded Northeastern students to serve as tutors. We share our financial literacy and investing skills with high school participants across an eight-week program, including lessons in personal finance, the basics of stocks/bonds, diversification/market volatility, and compound interest, among other things.\r\nThrough our intensive coursework, high school students form sophisticated analytical skills when looking at different types of investments. At the conclusion of our program, the student participants present their capstone projects, which break down their investment rationale and asset allocation of a $100 investment account. They invest in a mix of stocks, bonds, mutual funds, and index funds using an account opened in their name and funded by corporate partners. When they graduate from high school and turn 18, the account is transferred to them and serves as the initial seed for their future in investing.", + "num_members": 864, + "is_recruiting": "TRUE", + "recruitment_cycle": "fall", + "recruitment_type": "unrestricted", + "tags": [ + "FinancialLiteracy", + "Investing", + "Education", + "CommunityService", + "YouthEmpowerment" + ] + }, + { + "id": "a850f2ab-a072-4396-853a-e21d0f3f7d7e", + "name": "Ghanaian Student Organization", + "preview": "The GSO at Northeastern University is a welcoming community focused on celebrating and promoting Ghanaian culture. Our mission is to create a space where students from all backgrounds can come together to appreciate the richness of Ghana.", + "description": "The GSO at Northeastern University is a welcoming community focused on celebrating and promoting Ghanaian culture. Our mission is to create a space where students from all backgrounds can come together to appreciate the richness of Ghana.", + "num_members": 171, + "is_recruiting": "TRUE", + "recruitment_cycle": "always", + "recruitment_type": "unrestricted", + "tags": [ + "AfricanAmerican", + "Music", + "Dance", + "CommunityOutreach", + "Volunteerism" + ] + }, + { + "id": "7d2aa5b1-9340-49aa-8e30-d38e67f1e146", + "name": "Google Developer Students Club - Northeastern", + "preview": "Our goal is to create Impact, Innovate and Create. Impact students and empower them to\r\nimpact their communities through technology. ", + "description": "Our goal is to create Impact, Innovate and Create. Impact students and empower them to impact their communities through technology. The Google Developers Student Club (GDSC) will host information sessions, hands-on workshops, and student-community collaborative projects centered around the latest and greatest in technology, all with the support of Google and Google Developers.\r\nThe GDSC will enhance the educational, recreational, social, or cultural environment of Northeastern University by being inclusive to all students, by transferring knowledge to students, by forging closer relationships between students and local businesses in the community, and by promoting diversity in the tech community.", + "num_members": 509, + "is_recruiting": "TRUE", + "recruitment_cycle": "fall", + "recruitment_type": "application", + "tags": [ + "SoftwareEngineering", + "DataScience", + "CommunityOutreach", + "Technology", + "Google", + "StudentCommunity", + "Innovation" + ] + }, + { + "id": "41df2a93-836b-4127-9ead-2c6c8a8a12ee", + "name": "Graduate Biotechnology and Bioinformatics Association", + "preview": "Graduate Biotechnology and Bioinformatics Association is mainly focused on providing a \r\n platform to students which enables them to connect and interact with their peers in the \r\n program as well as industry professionals", + "description": "We aim to be an extended resource to the students as academic liaisons. Our association also plans to engage with Biotech/Bioinfo students in discussions, case studies, and career development sessions which will add to their portfolio.", + "num_members": 943, + "is_recruiting": "TRUE", + "recruitment_cycle": "spring", + "recruitment_type": "application", + "tags": [ + "Biology", + "DataScience", + "CareerDevelopment", + "CommunityOutreach" + ] + }, + { + "id": "66ebabfd-d7bd-4c4c-8646-68ca1a3a3f1a", + "name": "Graduate Female Leaders Club", + "preview": "The Female Leaders Club was formed to connect graduate-level women with one another and congruently with other female leaders in various industries.", + "description": "The mission is to build a community of current students and alumni as we navigate the graduate-level degree and professional goals post-graduation. We aspire to fulfill our mission by hosting speaking events with business leaders, networking in person and through virtual platforms, and providing workshops to foster professional growth.", + "num_members": 424, + "is_recruiting": "TRUE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "unrestricted", + "tags": [ + "WomenLeadership", + "BusinessNetworking", + "ProfessionalDevelopment", + "CommunityBuilding" + ] + }, + { + "id": "db402fd8-d44a-4a94-b013-2ad1f09e7921", + "name": "Half Asian People's Association", + "preview": "HAPA is a community to explore and celebrate the mixed-race Asian experience and identity.", + "description": "Hapa: “a person who is partially of Asian or Pacific Islander descent.\" We are a vibrant and supportive community centered around our mission of understanding and celebrating what it means to be mixed-race and Asian.\r\nJoin our Slack: https://join.slack.com/t/nuhapa/shared_invite/zt-2aaa37axd-k3DfhWXWyhUJ57Q1Zpvt3Q", + "num_members": 358, + "is_recruiting": "FALSE", + "recruitment_cycle": "fall", + "recruitment_type": "unrestricted", + "tags": [ + "AsianAmerican", + "LGBTQ", + "CommunityOutreach", + "CreativeWriting" + ] + }, + { + "id": "e78bce96-c0a4-4e2d-ace7-a0ae23a7934d", + "name": "Health Informatics Graduate Society of Northeastern University", + "preview": "The primary focus of the Health Informatics Graduate Society centers around our mission to cultivate a vibrant community of graduate students dedicated to advancing the field of health informatics.", + "description": "The Health Informatics Graduate Society of Northeastern University is a welcoming community of graduate students passionate about advancing the field of health informatics. Our primary focus revolves around cultivating a vibrant environment where students can collaborate, learn, and innovate together. Through networking events, workshops, and guest lectures, we aim to empower our members with the knowledge and skills needed to make a positive impact on healthcare systems and patient outcomes.", + "num_members": 636, + "is_recruiting": "FALSE", + "recruitment_cycle": "fall", + "recruitment_type": "unrestricted", + "tags": [ + "DataScience", + "HealthInformatics", + "NetworkingEvents", + "CommunityOutreach" + ] + }, + { + "id": "36ada6fb-f133-4ea3-80a6-db9527fd9bd1", + "name": "Hear Your Song Northeastern", + "preview": "Hear Your Song NU is a subsidiary chapter of Hear Your Song, with its mission and purpose being to bring collaborative songwriting to kids and teens with chronic medical conditions. ", + "description": "Hear Your Song NU is a subsidiary chapter of Hear Your Song, with its mission and purpose being to bring collaborative songwriting to kids and teens with chronic medical conditions. It will facilitate connections with local hospitals and organizations, perform all areas of music production and music video production, participate in trauma-informed training, and organize events and initiatives to further promote the therapeutic value of the arts.", + "num_members": 732, + "is_recruiting": "FALSE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "application", + "tags": [ + "PerformingArts", + "CreativeWriting", + "Music", + "Psychology", + "Volunteerism", + "CommunityOutreach" + ] + }, + { + "id": "a5f26966-78cc-46e3-a29b-7bd30fbb4394", + "name": "Hospitality Business Club", + "preview": "The Hospitality Business Club merges hospitality with business, exploring the blend of investments, design, real estate, and cuisine. Join us to unravel how hospitality shapes success across sectors. Interested? Reach out to join the exploration.", + "description": "The Hospitality Business Club is an exciting space where the intricate connections between hospitality and business are explored and celebrated. We delve into the seamless amalgamation of investments, design, real estate, cuisine, and more to showcase how hospitality plays a pivotal role in the broader business landscape. Far beyond just a service industry, hospitality shapes experiences and drives success across various sectors. As a member, you'll have the opportunity to engage with a like-minded community passionate about unraveling the complexities of this unique intersection. Our events, discussions, and collaborative projects aim to provide valuable insights into how hospitality functions within the broader scope of business. Whether you're a seasoned professional, an entrepreneur, a student, or an enthusiast, the Hospitality Business Club welcomes all who seek to understand and contribute to the fascinating synergy between hospitality and business.", + "num_members": 271, + "is_recruiting": "TRUE", + "recruitment_cycle": "always", + "recruitment_type": "application", + "tags": [ + "Hospitality", + "Business", + "Entrepreneurship", + "Networking", + "Events", + "Community", + "Engagement" + ] + }, + { + "id": "0621e78e-5254-4dcd-a99e-2529f4d9d882", + "name": "Huntington Strategy Group", + "preview": "Huntington Strategy Group", + "description": "Huntington Strategy Group is the Northeastern's student-led strategy consultancy for non-profits and social organizations. Our mission is to ensure that nonprofits and social enterprises committed to education, health, and poverty alleviation can reach their full potential by meeting their demand for high-quality strategic and operational assistance, and in so doing developing the next generation of social impact leaders. Making an impact is a mutually beneficial process. We hope to provide leading-edge consulting services to social enterprises in the greater Boston area, and in turn, academic enrichment and professional opportunities for our peers through fulfilling client work and corporate sponsorships.", + "num_members": 519, + "is_recruiting": "TRUE", + "recruitment_cycle": "spring", + "recruitment_type": "unrestricted", + "tags": [ + "Volunteerism", + "CommunityOutreach", + "HumanRights", + "Journalism" + ] + }, + { + "id": "a3b78a49-c5d0-4644-bbf9-2b830e37366d", + "name": "Husky Hemophilia Group", + "preview": "HHG\u2019s mission is to support people with bleeding disorders and those with loved one's bleeding disorders in research, education, and advocacy. ", + "description": "HHG’s mission is to support people with bleeding disorders and those with loved one's bleeding disorders in research, education, and advocacy. Bleeding disorders can be hereditary or acquired, where patients are unable to clot properly. In order to advocate for accessible healthcare for bleeding disorders, we as a chapter hope to educate the Northeastern and Massachusetts community in raising awareness for bleeding disorders. Welcome to our community!", + "num_members": 663, + "is_recruiting": "TRUE", + "recruitment_cycle": "always", + "recruitment_type": "application", + "tags": [ + "HealthcareAdvocacy", + "CommunityOutreach", + "Education", + "Support", + "Volunteerism" + ] + }, + { + "id": "c475cb86-41f3-43e9-bfb1-cc75142c894b", + "name": "IAFIE Northeastern University Chapter ", + "preview": "International Association for Intelligence Education (IAFIE): To serve as a local organization for Intelligence and associated professionals to advance research, knowledge, partnerships, and professional development. \r\n", + "description": "To serve as a local organization for Intelligence and associated professionals to advance research, knowledge, partnerships, and professional development. ", + "num_members": 1018, + "is_recruiting": "TRUE", + "recruitment_cycle": "spring", + "recruitment_type": "unrestricted", + "tags": [ + "Intelligence", + "Research", + "ProfessionalDevelopment" + ] + }, + { + "id": "c1d685f0-6334-428b-a860-defb5cf4f151", + "name": "If/When/How: Lawyering for Reproductive Justice at NUSL ", + "preview": "If/When/How mobilizes law students to foster legal expertise and support for reproductive justice. We integrate reproductive rights law and justice into legal education and build a foundation of lasting support for reproductive justice. ", + "description": "If/When/How: Lawyering for Reproductive Justice at NUSL mobilizes law students to foster legal expertise and support for reproductive justice. It integrates reproductive rights law and justice into legal education to further scholarly discourse and builds a foundation of lasting support for reproductive justice within the legal community. The vision is reproductive justice will exist when all people can exercise their rights and access the resources they need to thrive and to decide whether, when, and how to have and parent children with dignity, free from discrimination, coercion, or violence. If/When/How values (1) dignity: all people deserve to be treated with respect and dignity for their inherent worth as human beings in matters of sexuality, reproduction, birthing, and parenting; (2) empowerment: those with power and privilege must prioritize the needs, amplify the voices, and support the leadership of those from vulnerable, under-served, and marginalized communities; (3) diversity: our movement will be strongest if it includes, reflects, and responds to people representing various identities, communities, and experiences; (4) intersectionality: reproductive oppression is experienced at the intersection of identities, conditions, systems, policies, and practices; and (5) autonomy: all people must have the right and ability to make voluntary, informed decisions about their bodies, sexuality, and reproduction.", + "num_members": 170, + "is_recruiting": "FALSE", + "recruitment_cycle": "spring", + "recruitment_type": "unrestricted", + "tags": [ + "HumanRights", + "CommunityOutreach", + "Journalism", + "PublicRelations" + ] + }, + { + "id": "c15f0c80-84e4-4ba5-acae-1194d0152bfd", + "name": "Illume Magazine", + "preview": "Illume Magazine is a student-run publication at Northeastern University centered around all Asian-American and Asian/Pacific Islander experiences experiences, identities, and diasporas.", + "description": "Illume Magazine is a student-run publication at Northeastern University devoted to the critical thought, exploration, and celebration of Asian-American and Asian/Pacific Islander experiences, stories, issues, and identities across all diasporas.\r\nOur magazine writes on Lifestyle & Culture, Political Review, while also accepting Literary Arts submissions.", + "num_members": 20, + "is_recruiting": "FALSE", + "recruitment_cycle": "fall", + "recruitment_type": "application", + "tags": [ + "AsianAmerican", + "CreativeWriting", + "Journalism" + ] + }, + { + "id": "cbf8c2c0-e10e-424d-936d-a537137b88bb", + "name": "Indian Cultural Association", + "preview": "ICA\u2019s mission is to provide a community for all Indian students across the Northeastern campus. Serving as a bridge between international students and Indian Americans, this club will foster dialogue and a sense of unity between the two groups.", + "description": "ICA’s mission is to provide a community for all Indian students across the Northeastern campus. Serving as a bridge between international students and Indian Americans, this club will foster dialogue and a sense of unity between the two groups, by providing the resources for students to experience and learn about Indian culture during our meetings. Furthermore, our weekly meetings will help to familiarize members with modern India and evolving culture through movie nights and chai time chats. In addition, we will pair first-year international students with local students to help them acclimate to the new environment and to provide exposure to modern Indian culture for local students. ICA is Strictly an Undergraduate Club. ", + "num_members": 917, + "is_recruiting": "TRUE", + "recruitment_cycle": "fall", + "recruitment_type": "unrestricted", + "tags": [ + "AsianAmerican", + "CommunityOutreach", + "Cultural", + "Volunteerism" + ] + }, + { + "id": "36a5df26-618b-41df-a3cb-dde9ef5dc82e", + "name": "International Society for Pharmaceutical Engineering", + "preview": "The ISPE Student Chapter provides education, training, and networking opportunities referent to the biotechnology and pharmaceutical industry to graduate students, but also welcomes undergraduate students who want to participate in different activiti", + "description": " \r\n", + "num_members": 1022, + "is_recruiting": "FALSE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "unrestricted", + "tags": [ + "Engineering", + "Pharmaceutical", + "Biotechnology", + "Chemistry", + "EnvironmentalScience" + ] + }, + { + "id": "3b60daa3-1956-461b-b7f7-4811f698a100", + "name": "KADA K-Pop Dance Team", + "preview": "KADA K-Pop Dance Team aims to empower & connect it's members through dance, exciting events, & shared passions. By creating inclusive learning environments, we hope to give members a fun, flexible space to grow their dance & performance abilities.", + "description": "Founded in 2019, KADA is Northeastern University's first and only undergraduate K-Pop Dance Team, celebrating Korean popular culture through dance and offering a space for those looking to grow their dance skills. KADA has won Best Student Organization at Northeastern’s Dance4Me charity competition 3 years in a row and has worked to spread appreciation for Asian arts at a variety of other cultural events. With goals based in inclusivity, empowerment, and growth, we strive to create learning environments for all levels of dancers and drive connection through exciting events, shared passions, and an all-around fun time. From workshops, to rehearsals, to performances and projects, we want to create a space for members to to become stronger as both performers and leaders. ", + "num_members": 314, + "is_recruiting": "FALSE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "unrestricted", + "tags": [ + "PerformingArts", + "AsianAmerican", + "CommunityOutreach", + "Dance", + "Music" + ] + }, + { + "id": "bb7b63e9-8462-4158-b96e-74863ffc7062", + "name": "LatAm Business Club", + "preview": "Fostering a vibrant Latin American community, while creating an entrepreneurial environment for business development, professional growth, and geopolitical dialogue. ", + "description": "Welcome to the LatAm Business Club! Our club is dedicated to fostering a vibrant Latin American community by creating an entrepreneurial environment that supports business development, professional growth, and geopolitical dialogue. We provide a platform for networking, collaboration, and knowledge sharing among individuals interested in the unique opportunities and challenges of the Latin American business landscape. Whether you're an entrepreneur, a professional seeking growth opportunities, or someone passionate about Latin American affairs, our club offers a welcoming space to connect, learn, and thrive together.", + "num_members": 1023, + "is_recruiting": "TRUE", + "recruitment_cycle": "spring", + "recruitment_type": "unrestricted", + "tags": [ + "LatinAmerica", + "BusinessDevelopment", + "Networking", + "ProfessionalGrowth", + "Entrepreneurship", + "GeopoliticalDialogue" + ] + }, + { + "id": "7191f9a3-a824-42da-a7dd-5eeb1f96d53f", + "name": "Musicheads", + "preview": "Musicheads is for music enthusiasts, collectors, general listeners, and fanatics. We cover a wide range of genres and styles through our weekly Album Club (like a book club), and in our club group chat. Share your favorite music with us in a comfy sp", + "description": "Musicheads is a music appreciation and discussion club. Our primary club activity is hosting a weekly Album Club (like a book club, but for music). Club members take turns nominating albums, or musical releases, to listen to and discuss during album club. \r\nOur mission is to create a space for casual discussion and appreciation of music. Between our in-person meetings and online discussion board, there are always ways to share and discover new favorites!\r\nFollow for our Email Newsletter:\r\nhttp://eepurl.com/iBQzz2\r\nJoin the Musicheads discussion board:\r\nhttps://discord.com/invite/ZseEbC76tx", + "num_members": 214, + "is_recruiting": "TRUE", + "recruitment_cycle": "fall", + "recruitment_type": "unrestricted", + "tags": [ + "Music", + "CreativeWriting", + "CommunityOutreach" + ] + }, + { + "id": "1e20ef65-990e-478b-8695-560f2aa8b5d2", + "name": "NAAD (Northeastern A Cappella Association for Desi Music)", + "preview": "NAAD (Northeastern A Cappella Association for Desi Music) embodies the profound resonance of South Asian music. Join us on a cultural journey as we bring the rich tapestry of South Asian music to the A Cappella sphere at Northeastern University!", + "description": "Naad literally means “sound”, but in philosophical terms it is the primordial sound that echoes through the universe, the vibration that is believed to have originated with its creation and has been reverberating through our very being ever since. Therefore, it is considered as the eternal Sound or Melody. NAAD which is our acronym for Northeastern A Cappella Association for Desi Music will be focused on bringing music lovers of South Asian music together. There are different types of music that originated in South Asia like hindustani classical, ghazal, qawali, carnatic music and so on. This will also bring South Asian music to the A Cappella sphere in Northeastern University. The club will consist of musicians from different south asian countries (Afghanistan, Bangladesh, Bhutan, India, Maldives, Nepal, Pakistan, and Sri Lanka) which will be reflected in our music and in our performances. ", + "num_members": 538, + "is_recruiting": "FALSE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "unrestricted", + "tags": [ + "PerformingArts", + "Music", + "AsianAmerican", + "CreativeWriting" + ] + }, + { + "id": "185eaaf8-8ac0-4095-9027-60caf0e9cba7", + "name": "Naloxone Outreach and Education Initiative", + "preview": "Our club aims to educate Northeastern students, and surrounding community members on opioid emergencies, and how to use naloxone. We aim to increase access to naloxone and other harm reduction tools in our community. ", + "description": "The Naloxone Outreach and Education Initiative is an organization dedicated to educating Northeastern students, and surrounding community members on the opioid public health crisis, opioid emergencies, and reversing an opioid overdose using naloxone in order to save a life. We also aim to increase awareness of the opioid crisis, and oppose the stigma surrounding addiction, opioid use, and seeking treatment. We offer free training sessions, naloxone, fentanyl test strips, along with other resources. The hope of this program is to ultimately increase preparedness for these emergencies, as they are occurring all around us, while also changing the way our community thinks about drug use, addiction, and treatment.", + "num_members": 961, + "is_recruiting": "TRUE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "application", + "tags": [ + "CommunityOutreach", + "Volunteerism", + "PublicRelations", + "Education", + "Health", + "HumanRights" + ] + }, + { + "id": "8c5e399e-3a7c-4ca6-8f05-7c5f385d5237", + "name": "Network of Enlightened Women at Northeastern", + "preview": "NeW is a women driven organization which focuses on professional development, the discussion of ideas, and fostering a community. We are like minded women who are open and willing to explore cultural and political issues, often in a conservative ligh", + "description": "The Network of Enlightened Women educates, equips, and empowers women to be principled leaders for a free society. NeW is a national community of conservative and independent-minded women from all sectors and backgrounds, passionate about educating, equipping, and empowering all women. \r\n \r\nNeW serves as a thought leader, promoting independent thinking and providing intellectual diversity on college campuses and in public discussions on women, policy, and culture. \r\n \r\nThis NeW chapter intends to bring together women for fun meetings, discussions on current events, professional development training, and service/volunteer work. The chapter helps women find friends on campus, learn something, and build their resumes. \r\n \r\nThe three goals of NeW are to create a network of conservative women on campus and beyond, to become more educated on conservative issues and educate others, and to encourage more women to become leaders on campuses and in the community. \r\n \r\nNeW cultivates a vibrant community of women through campus chapters, professional chapters, and our online presence that emboldens participants to confidently advocate for pro-liberty ideas in their schools, workplaces, homes, and communities. \r\n \r\nNeW also connects program participants with career-advancing professional opportunities.\r\n \r\nNeW trains pro-liberty women to serve as leaders through campus sessions, national conferences, leadership retreats, and professional development programs.", + "num_members": 7, + "is_recruiting": "TRUE", + "recruitment_cycle": "spring", + "recruitment_type": "unrestricted", + "tags": [ + "Christianity", + "Leadership", + "CommunityOutreach", + "Volunteerism", + "ProfessionalDevelopment", + "Conservative", + "PublicPolicy" + ] + }, + { + "id": "52b6aff9-b528-4166-981c-538c2a88ec6d", + "name": "North African Student Association", + "preview": "The North African Student Association at Northeastern University aims to provide a welcoming space for students of North African descent and those interested in North African culture. ", + "description": "The North African Student Association at Northeastern University aims to provide a welcoming space for students of North African descent and those interested in North African culture. We strive to foster connections, raise awareness of diverse North African cultures, and offer academic and career support for all members, promoting success and excellence within the Northeastern community.", + "num_members": 987, + "is_recruiting": "TRUE", + "recruitment_cycle": "fall", + "recruitment_type": "application", + "tags": [ + "AfricanAmerican", + "CommunityOutreach", + "Volunteerism", + "CulturalAwareness" + ] + }, + { + "id": "565fc7e8-dbdc-449b-aa92-55e39f81e472", + "name": "Northeastern University Physical Therapy Club", + "preview": "The Physical Therapy Club serves to enhance the professional development of students in the Physical Therapy program by organizing and participating in educational, social, and other charitable events.", + "description": "The Physical Therapy Club serves to enhance the professional development of students in the Physical Therapy program by organizing and participating in educational, social, and other charitable events. The NEU PT Club is a student organization that works intimately with the Physical Therapy Department to sponsor the William E. Carter School Prom, host wellness events during National Physical Therapy Month, support the APTA Research Foundation, provide physical therapy-related community outreach opportunities and host social gatherings to help physical therapy majors from all years get to know each other. The Club also sponsors attendees at the APTA's National Conferences yearly, schedules guest lectures, and provides social networking opportunities for all NEU Physical Therapy majors.", + "num_members": 741, + "is_recruiting": "TRUE", + "recruitment_cycle": "always", + "recruitment_type": "unrestricted", + "tags": [ + "Volunteerism", + "CommunityOutreach", + "PublicRelations", + "Healthcare" + ] + }, + { + "id": "37403528-45cd-4d8b-b456-7d801abbf08d", + "name": "null NEU", + "preview": "null NEU at Northeastern University promotes cybersecurity education and innovation through events, projects, and resources. Recognized by Khoury College, we welcome students passionate about security. Join our mission to create a safer digital world", + "description": "Welcome to null NEU, the cybersecurity hub at Northeastern University. As the official student chapter of the renowned null community, we stand at the forefront of cybersecurity education, collaboration, and innovation within the dynamic environment of the Khoury College of Computer Sciences. Our commitment is to learn about security and live it, shaping the future of digital safety one project at a time.\r\n \r\nWho We Are\r\nnull NEU is more than an organization; we are a movement. Driven by student leadership and recognized by esteemed faculty, our mission is threefold: to elevate security awareness across campus, to build a centralized repository brimming with cutting-edge security knowledge, and to push the boundaries of traditional security research into new and uncharted territories.\r\n \r\nGet Involved\r\nCybersecurity is a vast ocean, and there's a place for everyone in null NEU. Whether you're taking your first dive into security or you're already navigating the deep waters, we offer a plethora of opportunities to engage, learn, and contribute:\r\n- Participate in Our Events: From workshops to guest lectures and hackathons, our events are designed to expand your knowledge and network.\r\n- Contribute Your Skills: Have a knack for coding, research, or design? Our ongoing projects need your expertise.\r\n- Leverage Our Resources: Access our curated content and learning tools to advance your cybersecurity journey.\r\n \r\nStay Connected\r\nThe digital world is our playground, and we're active across several platforms. Connect with us on LinkedIn for professional networking, join our Mastodon community for lively discussions, follow our Instagram for a visual tour of our activities, and stay updated with our Twitter feed for real-time engagement.", + "num_members": 53, + "is_recruiting": "TRUE", + "recruitment_cycle": "always", + "recruitment_type": "application", + "tags": [ + "SoftwareEngineering", + "Cybersecurity", + "Networking", + "DataScience", + "Coding" + ] + }, + { + "id": "67c976b8-e3bb-4ef7-adc4-d41d1ae48830", + "name": "Orthodox Christian Fellowship", + "preview": "Orthodox Christian Fellowship (OCF) is the official collegiate campus ministry program under the ACOBUSA. We work to serve the spiritual and community needs of Eastern Orthodox Christians at Northeastern.", + "description": "The purpose of OCF is to serve the spiritual and community needs of Eastern Orthodox Christians on campus. This entails the “Four Pillars of OCF”:\r\n \r\n\r\nFellowship:\r\n\r\n \r\n\r\n\r\n\r\nCreate a welcoming environment where all students can share their college experience with others who share their values.\r\nEncourage students to engage with the life of the parish and the Church outside of club hours.\r\n\r\n\r\n\r\n \r\n\r\nEducation:\r\n\r\n \r\n\r\n\r\n\r\nAllow students to learn about their faith and engage more deeply with it alongside others.\r\nTeach students how to identify and act on their beliefs and values in their academic and professional lives.\r\n\r\n\r\n\r\n \r\n\r\nWorship:\r\n\r\n \r\n\r\n\r\n\r\nEncourage students to strengthen their relationship with God, in good times and bad, through thankfulness and prayer.\r\nAllow students to have access to the sacraments and sacramental life of the Eastern Orthodox Church.\r\n\r\n\r\n\r\n \r\n\r\nService:\r\n\r\n \r\n\r\n\r\nEncourage students to participate in club-affiliated and non-club-affiliated activities of service to the underprivileged.\r\nTeach students how to incorporate elements of service and compassion into their everyday lives.\r\n\r\n", + "num_members": 320, + "is_recruiting": "FALSE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "application", + "tags": [ + "Christianity", + "Service", + "Fellowship", + "Education", + "Volunteerism" + ] + }, + { + "id": "cd768106-ee11-4e65-9e33-100e02393c23", + "name": "Pages for Pediatrics at NEU", + "preview": "We publish and distribute children's storybooks about different pediatric illnesses/disabilities. Through narrative mirroring, our children's books aim to normalize patient adversity, advocate for disability representation, and combat stigma.", + "description": "Hospital stays can be stressful and overwhelming for a child of any age. Many children fear the hospital environment and find it difficult to cope with their illness alone. To help alleviate patient anxiety, we center our children’s storybooks around characters that pediatric patients can relate to as a means of instilling hope, comfort, and solidarity in our readers. \r\nThrough narrative mirroring, our children’s storybooks aim to normalize patient adversity, advocate for disability representation, and combat stigma towards pediatric conditions in the broader community. We believe that every patient should have unhindered access to our therapeutic stories; hence we raise funds to cover the production and distribution of our books so we can donate copies to pediatric patients at Boston Children’s Hospital and others nationwide. We also hope to outreach to local elementary schools.", + "num_members": 846, + "is_recruiting": "TRUE", + "recruitment_cycle": "always", + "recruitment_type": "unrestricted", + "tags": [ + "Volunteerism", + "CommunityOutreach", + "CreativeWriting", + "VisualArts", + "HumanRights" + ] + }, + { + "id": "1b091bfa-da37-476e-943d-86baf5929d8c", + "name": "Poker Club", + "preview": "We host regular Poker games for players of all skill levels, completely free-of-charge with prizes! We also host regular workshops and general meetings for members to learn more about how to play Poker. Follow us for more on Instagram! @nupokerclub", + "description": "Northeastern Poker Club is a student organization for students to play and learn more about Poker on campus. We host regular Poker games on campus, regular workshops and general meetings for members to learn more about how to play Poker.\r\nWe're welcome to poker players of all skill levels. We strictly operate on a non-gambling basis, thus, all of our Poker games are free-of-charge and we give out regular prizes through our Poker games!\r\nWe also participate in the PokerIPA tournament, where the best of the club get to play against top Poker players in colleges around the world for big prizes (learn more at pokeripa.com). ", + "num_members": 25, + "is_recruiting": "TRUE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "unrestricted", + "tags": [ + "CommunityOutreach", + "Volunteerism", + "PerformingArts" + ] + }, + { + "id": "d456f9ad-6af0-4e0f-8c1b-8ca656bfc5a2", + "name": "Queer Caucus", + "preview": "Queer Caucus is a student-run organization dedicated to supporting lesbian, gay, bisexual, transgender, queer, gender non-conforming, non-binary, asexual, genderqueer, Two-Spirit, intersex, pansexual, and questioning members of the NUSL community.", + "description": "Queer Caucus is a student-run organization dedicated to supporting lesbian, gay, bisexual, transgender, queer, gender non-conforming, non-binary, asexual, genderqueer, Two-Spirit, intersex, pansexual, and questioning students, staff, and faculty at NUSL. QC seeks to offer a welcoming space for all queer individuals to connect with other queer students while mobilizing around issues of injustice and oppression. We seek to affirm and support our members who are Black, Indigenous, and people of color, as well as our members with disabilities. Through educational programming, campus visibility, and professional development, Queer Caucus seeks to maintain Northeastern University School of Law’s position as the “queerest law school in the nation.”", + "num_members": 347, + "is_recruiting": "FALSE", + "recruitment_cycle": "spring", + "recruitment_type": "application", + "tags": [ + "LGBTQ", + "HumanRights", + "CommunityOutreach", + "PublicRelations" + ] + }, + { + "id": "008998ca-8dc4-4d0b-8334-18123c6c051f", + "name": "Real Talks", + "preview": "We're a group that provides a space for students to connect and talk about real life issues and relevant social topics, and also enjoys fun times and good food!", + "description": "", + "num_members": 219, + "is_recruiting": "TRUE", + "recruitment_cycle": "always", + "recruitment_type": "application", + "tags": [ + "CommunityOutreach", + "HumanRights", + "Journalism", + "Film" + ] + }, + { + "id": "d07fcf14-b256-4fe2-93d5-7d2f973a8055", + "name": "ReNU", + "preview": "ReNU is focused on prototyping small-scale renewable energy systems. ", + "description": "ReNU is devoted to the technical development of small-scale renewable energy systems. We prototype windmills, solar panels, and other similar technologies at a small scale. If possible, we enter our prototypes into national competitions. The club meets on a weekly basis to design, construct our prototypes, learn engineering skills, and learn about renewable energy. ", + "num_members": 809, + "is_recruiting": "TRUE", + "recruitment_cycle": "fall", + "recruitment_type": "application", + "tags": [ + "EnvironmentalScience", + "RenewableEnergy", + "Engineering", + "Prototype" + ] + }, + { + "id": "690fbd88-f879-4e30-97fd-69b295456093", + "name": "rev", + "preview": "rev is a community for committed builders, founders, creatives, and researchers at Northeastern University to take ideas from inception to reality.", + "description": "rev is a community of builders, founders, creatives, and researchers at Northeastern University. This is a space where students collaborate to work on side projects and take any idea from inception to reality. Our mission is to foster hacker culture in Boston and provide an environment for students to innovate, pursue passion projects, and meet other like-minded individuals in their domain expertise.", + "num_members": 43, + "is_recruiting": "TRUE", + "recruitment_cycle": "fall", + "recruitment_type": "unrestricted", + "tags": [ + "SoftwareEngineering", + "DataScience", + "CommunityOutreach", + "Volunteerism" + ] + }, + { + "id": "aa8f0ad8-09ff-4fc1-8609-96b3532ac51b", + "name": "Rhythm Games Club", + "preview": "We the Northeastern's Rhythm Games Club provide a community where members can play and share their experience with Rhythm Games!", + "description": "We are Northeastern's Rhythm Games Club!\r\nOur goal is to bring people together through playing Rhythm Games. We have many different games and events where you can try out and test your rhythm and reaction skills! Please join our discord at https://discord.gg/G4rUWYBqv3 to stay up to date with our meetings and events. ", + "num_members": 764, + "is_recruiting": "FALSE", + "recruitment_cycle": "always", + "recruitment_type": "application", + "tags": [ + "PerformingArts", + "Music", + "CommunityOutreach", + "VisualArts" + ] + }, + { + "id": "2beeb1f8-b056-4827-9720-10f5bf15cc75", + "name": "Scholars of Finance", + "preview": "Scholars of Finance is a rapidly growing organization on a mission to inspire character and integrity in the finance leaders of tomorrow. We seek to solve the world\u2019s largest problems by investing in undergraduate students.", + "description": "Scholars of Finance is a vibrant community dedicated to cultivating the next generation of ethical finance leaders. With a focus on integrity and character development, we empower undergraduate students to tackle global challenges through financial literacy and responsible investing. Join us in building a brighter future through education, collaboration, and impactful initiatives!", + "num_members": 866, + "is_recruiting": "FALSE", + "recruitment_cycle": "spring", + "recruitment_type": "application", + "tags": [ + "Finance", + "Leadership", + "Education", + "Ethics", + "GlobalChallenges" + ] + }, + { + "id": "595b59ab-38c5-44cd-82e9-ddae9935567a", + "name": "SPIC MACAY NU CHAPTER", + "preview": "The Spic Macay chapter of NU aimed at promoting Indian art forms.", + "description": "Welcome to the SPIC MACAY NU CHAPTER! We are a vibrant community dedicated to celebrating the rich tapestry of Indian art forms. Our mission is to foster a deep appreciation for diverse cultural expressions through a range of engaging activities and events. From mesmerizing classical dances to soul-stirring music concerts, we strive to create a welcoming space for all enthusiasts to connect, learn, and revel in the beauty of Indian heritage. Join us on this exciting journey of exploration and discovery as we come together to promote and preserve the magic of age-old artistic traditions.", + "num_members": 120, + "is_recruiting": "FALSE", + "recruitment_cycle": "spring", + "recruitment_type": "application", + "tags": [ + "PerformingArts", + "VisualArts", + "Music", + "CulturalHeritage", + "CommunityOutreach" + ] + }, + { + "id": "f4743b64-70d8-4ed8-a983-9668efdca146", + "name": "The Libre Software Advocacy Group", + "preview": "The goal of our organization is to promote the digital freedom of all through the promotion of Libre Software Ideals. ", + "description": "The Libre Software Advocacy Group is a passionate community dedicated to advancing the principles of digital freedom through the advocacy of Libre Software Ideals. Our organization strives to empower individuals by promoting the use of free and open-source software that champions collaboration, transparency, and user rights. Join us in our mission to cultivate a culture of innovation, inclusivity, and ethical technology practices for the betterment of all.", + "num_members": 549, + "is_recruiting": "FALSE", + "recruitment_cycle": "spring", + "recruitment_type": "application", + "tags": [ + "SoftwareEngineering", + "OpenSource", + "Technology", + "CommunityOutreach", + "EthicalTechnologyPractices" + ] + }, + { + "id": "803fa5c5-feb8-4966-b3ff-0131f6887b6b", + "name": "The Women's Network Northeastern", + "preview": "The Women's Network is the largest collegiate women's networking organization in the nation. There are over 100 chapters at universities across the United States, Canada, and soon Ireland!", + "description": "The Women's Network strives to cultivate and celebrate women's ambitions through connecting members to industry leaders, professional development resources, and career opportunities. TWN Northeastern holds a variety of experiential events: speaker events, professional development workshops, networking trips, alumnae receptions, community-based discussions, and more. Being a part of TWN is a great way to authentically expand networks, build confidence, gain exposure to different industries, and discover new career opportunities. Joining TWN has opened doors for tens of thousands of women across the country! Fill out our membership form at bit.ly/jointwn and visit our instagram @thewomensnetwork_northeastern to view our upcoming events!", + "num_members": 346, + "is_recruiting": "FALSE", + "recruitment_cycle": "always", + "recruitment_type": "application", + "tags": [ + "WomenEmpowerment", + "ProfessionalDevelopment", + "NetworkingEvents", + "CommunityBuilding" + ] + }, + { + "id": "b3c62e9e-ff30-4720-addc-f8f299f13b1f", + "name": "Undergraduate Law Review", + "preview": "The Undergraduate Law Review (NUULR) is Northeastern's distinguished undergraduate legal publication. ", + "description": "Established in 2023, the Undergraduate Law Review (NUULR) is Northeastern's distinguished undergraduate legal publication. Committed to fostering intellectual discourse and scholarly engagement, NUULR publishes insightful legal scholarship authored by undergraduate students from diverse backgrounds. Our mission is to create a dynamic space where legal ideas are explored, discussed, and shared among the Northeastern University community and the broader public. Our culture is rooted in the values of objectivity, critical thinking, and interdisciplinary exploration, making NUULR a leading forum for undergraduate legal discourse, critical analysis, and academic fervor.\r\nIf you interested in joining NUULR, then please fill out this form to be added onto our listserv: https://forms.gle/g1c883FHAUnz6kky6\r\n ", + "num_members": 623, + "is_recruiting": "TRUE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "unrestricted", + "tags": [ + "Prelaw", + "Journalism", + "CommunityOutreach", + "HumanRights" + ] + }, + { + "id": "778fc711-df60-4f1c-a886-01624419b219", + "name": "United Against Trafficking", + "preview": "United Against Trafficking, is dedicated to educating, advocating, and taking concrete actions to combat all forms of human trafficking. We strive to create an environment where knowledge, activism, and compassion intersect to drive meaningful change", + "description": "United Against Trafficking is an organization dedicated to combating various forms of human trafficking, including sex trafficking, labor trafficking, and forced labor. Embracing the values of dignity and rights for all individuals, our mission centers on eradicating the horrors of trafficking and fostering a world where no one falls victim to such atrocities. Welcoming members from Northeastern University, including students, faculty, and staff, our aim is to build an inclusive and diverse community representing diverse academic disciplines and backgrounds. While our primary focus is within the university, we actively seek collaborations with local and national anti-trafficking entities, survivors, and advocates. Our initiatives span awareness campaigns, advocacy for policy reforms, community outreach, workshops, and training programs. Additionally, we engage in fundraising events to support frontline anti-trafficking efforts and foster collaborative partnerships to maximize impact. Furthermore, our organization encourages research projects aimed at enhancing understanding and driving evidence-based solutions. United Against Trafficking envisions a campus environment where knowledge, activism, and empathy intersect to create substantial change in the fight against human trafficking, aspiring to be a beacon of hope and progress in the global mission for a world free from exploitation and suffering. ", + "num_members": 276, + "is_recruiting": "TRUE", + "recruitment_cycle": "spring", + "recruitment_type": "unrestricted", + "tags": [ + "HumanRights", + "CommunityOutreach", + "Volunteerism", + "Advocacy", + "PublicRelations", + "Research", + "Collaboration" + ] + }, + { + "id": "7d62e8f0-7ebc-4699-a0de-c23a6e693f43", + "name": "United Nations Association at Northeastern", + "preview": "Through advocacy, discussion, and education, UNA Northeastern advocates for the UN Sustainable Development Goals and for US leadership at the UN, both our global and local community. ", + "description": "The United Nations Association of the USA is a grassroots organization that advocates for US leadership at the United Nations (UN). With over 20,000 members and more than 200 chapters across the country, UNA-USA members are united in their commitment to global engagement and their belief that each of us can play a part in advancing the UN’s mission and achieving the Sustainable Development Goals (SDGs). As a campus chapter UNA Northeastern advocates for the UN SDGs locally and connects the mission and career opportunities of the UN to our community. \r\nWe’re working to build a welcoming community of students who are passionate about international issues. As an organization we come together weekly to learn about and discuss international issues and advocate for change in our community. The SDGs cover a broad range of issues and our focus represents this. Some of our past events, beyond our weekly meetings, have included annual UN Day and Earth Day events, a clothing drive, volunteering in the community, meeting with our representatives, and trips to UN events in New York. ", + "num_members": 901, + "is_recruiting": "FALSE", + "recruitment_cycle": "always", + "recruitment_type": "unrestricted", + "tags": [ + "HumanRights", + "EnvironmentalAdvocacy", + "CommunityOutreach", + "Volunteerism", + "LGBTQ", + "Journalism" + ] + }, + { + "id": "3e68fb8f-9d0f-45d3-9a18-2915c8cf464a", + "name": "Women\u2019s + Health Initiative at Northeastern", + "preview": "W+HIN is a safe space for all those interested to discuss and learn about disparities that exist in healthcare for women and people with uteruses and how to combat these. We spread this knowledge by producing a student written women's health journal.", + "description": "The purpose of this organization is to provide a safe space for all people with uteruses and other interested parties to discuss and learn about the disparities that exist in healthcare for women and how to combat these. Topics surrounding women’s health are often viewed as taboo, preventing people with uteruses from becoming fully aware of the issues they face and how they can care best for their health. This organization is meant to combat this struggle by increasing women’s health education on campus both within and outside of organizational meetings and contributing to women’s health efforts in the greater Boston area. The organization will spread this knowledge mainly by producing a student written journal each semester. ", + "num_members": 492, + "is_recruiting": "TRUE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "unrestricted", + "tags": [ + "Women'sHealth", + "HealthEducation", + "Journalism", + "CommunityOutreach" + ] + }, + { + "id": "02ef6079-d907-4903-935a-bb5afd7e74d5", + "name": "Aaroh", + "preview": "Are you proud of your Indian roots? Aaroh is an undergraduate Indian music club with an aim to bring music lovers together with a focus on different types of music bringing musical diversity to the campus and giving students a platform to perform.", + "description": "Aaroh is an organization that aims to bring music lovers together with a focus on the different types of Indian music; including but not limited to Bollywood, folk, fusion, Carnatic, and Hindustani classical with a focus on Indian origin instruments.\r\nWe will be actively engaged in bringing musical diversity to the campus, giving students a platform to convene, discuss and perform.", + "num_members": 72, + "is_recruiting": "TRUE", + "recruitment_cycle": "fall", + "recruitment_type": "unrestricted", + "tags": [ + "Music", + "PerformingArts", + "IndianMusic", + "CulturalDiversity", + "CommunityOutreach" + ] + }, + { + "id": "88967bf8-2844-4899-b2a6-2652f5cfb9ac", + "name": "Acting Out", + "preview": "Acting Out is Northeastern University's only acting company dedicated to promoting social change through the work that it produces, events it holds, and discussions it facilitates. ", + "description": "Acting Out is Northeastern University's only acting company dedicated to promoting social change through the work that it produces, events it holds, and discussions it facilitates.", + "num_members": 672, + "is_recruiting": "TRUE", + "recruitment_cycle": "always", + "recruitment_type": "unrestricted", + "tags": [ + "PerformingArts", + "CommunityOutreach", + "HumanRights", + "Film" + ] + }, + { + "id": "6df3912c-1ae1-4446-978c-11cb323c7048", + "name": "Active Minds at NU", + "preview": "As a chapter of the national organization, Active Minds, Inc., Active Minds at NU strives to reduce the stigmas associated with mental health disorders and encourage conversation among Northeastern students about mental health.", + "description": "As a chapter of the national organization, Active Minds, Inc., Active Minds at NU strives to reduce the stigmas associated with mental health disorders and encourage conversation among Northeastern students about mental health. We are not a support group or peer counselors, but rather an educational tool and liaison for students. We aim to advocate for students and bring about general awareness through weekly meetings and programming. Drop by any of our events or meetings to say hi! :)\r\nJoin our Slack!\r\nCheck out our website!", + "num_members": 232, + "is_recruiting": "FALSE", + "recruitment_cycle": "spring", + "recruitment_type": "application", + "tags": [ + "Psychology", + "Neuroscience", + "CommunityOutreach", + "HumanRights" + ] + }, + { + "id": "8145ac02-c649-4525-8ce6-d4e074261445", + "name": "Addiction Support and Awareness Group", + "preview": "The mission of this organization is to create a community for people struggling with addiction and to educate the Northeastern community on this topic. You do not have to be dealing with addiction to join!", + "description": "The mission of this organization is to create a community for people struggling with addiction and to educate the northeastern community on the topic. The National Institute on Drug Abuse has established that as of 2022, 20.4 million people have been diagnosed with a substance use disorder in the past year and only 10.3% of those people received some type of treatment. Massachusetts itself suffers from an opioid crisis, and more people have died from drug overdose in recent years than ever before. In the Boston-Cambridge-Quincy Area, the home of Northeastern, 396,000 people ages 12 or older were classified as having a substance use disorder in the past year, higher than the national rate (NSDUH Report). College students between ages of 18 and 22 particularly are at higher risk for struggling with substance use disorders. The National Survey on Drug Use and Health asked participants in this age group who were at college and who were not if they had used alcohol in the past month; college students' \"yes,\" answers were 10% higher than the group that was not in college.\r\n \r\n ", + "num_members": 785, + "is_recruiting": "TRUE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "unrestricted", + "tags": [ + "HealthAwareness", + "Volunteerism", + "CommunityOutreach", + "Psychology", + "HumanRights" + ] + }, + { + "id": "389cfa82-16cf-4ec1-b864-2a871b069a44", + "name": "AerospaceNU", + "preview": "This group is for anyone and everyone who wants to design and build projects with the goal of getting them in the air. Whether it's rockets, unmanned aerial vehicles, quadcopters, or weather balloons, you can bet we're building it and teaching anyone", + "description": "This group is for anyone and everyone who wants to design and build projects with the goal of getting them in the air. Whether it's rockets, unmanned aerial vehicles, airships, quadcopters, or weather balloons, you can bet we're building it and sending it soaring. This club supports multiple projects at a time, some of which compete against other schools, others are trying to break records, while others are just for research and fun. You don't need to have any experience to join us! We are here to give students the opportunity to get their hands dirty and pursue projects about which they are passionate. Check out our website for more information and to get added to our emailing list!", + "num_members": 931, + "is_recruiting": "FALSE", + "recruitment_cycle": "always", + "recruitment_type": "unrestricted", + "tags": [ + "Aerospace", + "Engineering", + "Physics", + "CommunityOutreach" + ] + }, + { + "id": "9ad47970-206b-4b78-be2b-f36b3e9c2e07", + "name": "African Graduate Students Association", + "preview": "AGSA is dedicated to empowering African graduate students and enhancing their educational and personal experiences.", + "description": " \r\nThe African Graduate Students Association at Northeastern University is dedicated to empowering African graduate students and enhancing their educational and personal experiences. Our purpose revolves around six core themes: community building, professional development, advocacy, global engagement, leadership empowerment, and cultural integration. Through these focused areas, we aim to support our members in achieving their academic and career goals, advocate for their needs, celebrate the rich diversity of African cultures, and foster a sense of unity and inclusion within the university and beyond.\r\n ", + "num_members": 674, + "is_recruiting": "TRUE", + "recruitment_cycle": "always", + "recruitment_type": "unrestricted", + "tags": [ + "AfricanAmerican", + "GlobalEngagement", + "LeadershipEmpowerment", + "CommunityBuilding" + ] + }, + { + "id": "e6fbe5d2-1049-47e1-a2c9-de5389dd1413", + "name": "afterHOURS", + "preview": "Afterhours is an extremely unique college entertainment venue located in the Curry Student Center at Northeastern University in Boston, MA. From state-of-the-art video and sound concepts to a full-service Starbucks Coffee, Afterhours programs almost ", + "description": "Afterhours is an extremely unique college entertainment venue located in the Curry Student Center at Northeastern University in Boston, MA. From state-of-the-art video and sound concepts to a full-service Starbucks Coffee, Afterhours programs almost every night of the week and supports programming for over 200 student organizations!Come down to check out sweet music and grab your favorite Starbucks treat!", + "num_members": 560, + "is_recruiting": "FALSE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "unrestricted", + "tags": [ + "PerformingArts", + "Music", + "CommunityOutreach", + "Film" + ] + }, + { + "id": "f194ecf9-204a-45d3-92ab-c405f3bdff25", + "name": "Agape Christian Fellowship", + "preview": "We are Agape Christian Fellowship, the Cru chapter at Northeastern University. We are a movement of students loving Jesus, loving each other, and loving our campus. We currently meet at 7:30 EST on Thursdays- feel free to stop by!", + "description": "We are Agape Christian Fellowship, the Cru chapter at Northeastern University. We are a movement of students loving Jesus, loving each other, and loving our campus. Our vision is to be a community of people growing in their relationships with Jesus, learning together, and encouraging one another.We currently meet at 7:30PM on Thursdays in West Village G 02 for our weekly meeting, and we'd love if you could stop by!", + "num_members": 615, + "is_recruiting": "FALSE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "unrestricted", + "tags": [ + "Christianity", + "CommunityOutreach", + "Volunteerism", + "CommunityOutreach", + "HumanRights" + ] + }, + { + "id": "6443f16e-2afd-468d-b4f6-26697a7f6f43", + "name": "Alliance for Diversity in Science and Engineering", + "preview": "Our mission is to increase the participation of underrepresented groups (Women, Latinos, African-Americans, Native Americans, the LGBTQIA+ community, persons with disabilities, etc.) in academia, industry, and government. ", + "description": "Our mission is to increase the participation of underrepresented groups (Women, Latinos, African-Americans, Native Americans, the LGBTQA community and persons with disabilities, etc.) in academia, industry, and government. ADSE supports, organizes, and oversees local, graduate student-run organizations that reach out to students and scientists of all ages and backgrounds. We aim to connect scientists across the nation, showcase non-traditional career paths and underrepresented minority experiences in STEM, and educate students at all levels about opportunities in the sciences.\r\n \r\nPlease check out our Summer Involvement Fair Information Session at the belowlink to learn more about our organization and what we have to offer you thisyear: https://www.youtube.com/watch?v=ozYtnJDxSHc&t=750s ", + "num_members": 547, + "is_recruiting": "FALSE", + "recruitment_cycle": "fall", + "recruitment_type": "unrestricted", + "tags": [ + "LGBTQ", + "Volunteerism", + "CommunityOutreach", + "STEM", + "Diversity", + "Education", + "Science", + "Engineering" + ] + }, + { + "id": "9d515217-c60e-4a7c-b431-5429371b9d84", + "name": "Alpha Chi Omega", + "preview": "The Alpha Chi Omega Fraternity is devoted to enriching the lives of members through lifetime opportunities of friendship, leadership, learning and service.", + "description": "The Alpha Chi Omega Fraternity is devoted to enriching the lives of members through lifetime opportunities of friendship, leadership, learning and service.", + "num_members": 801, + "is_recruiting": "FALSE", + "recruitment_cycle": "spring", + "recruitment_type": "application", + "tags": [ + "Volunteerism", + "CommunityOutreach", + "Leadership", + "Friendship", + "Service" + ] + }, + { + "id": "28b189aa-b93d-4e90-abad-c4bc9e227978", + "name": "Alpha Epsilon Delta, The National Health Preprofessional Honor Society", + "preview": "\r\nAlpha Epsilon Delta is a nationally recognized Health Preprofessional Honors Society. \r\nPlease get in touch with us at northeasternaed@gmail.com if you are interested in applying. ", + "description": "\r\nAlpha Epsilon Delta (AED) is the National Health Preprofessional Honor Society dedicated to encouraging and recognizing excellence in preprofessional health scholarship. Our Chapter here at Northeastern includes undergraduate students on the pre-med, pre-PA, pre-vet, pre-PT, and pre-dental tracks. We also have members who are interested in pursuing careers in research. Our biweekly chapter meetings consist of various activities, including focused discussions, student panels, and guest speakers' lectures. Last semester, members also had the opportunity to attend CPR lessons, suture clinics and participate in club sponsored volunteer activities.\r\n\r\n\r\n \r\nTimeline:\r\n\r\n\r\nApplications will be sent out in both the Fall and Spring semesters for an Induction in November and January. If you have any questions, please email us at northeatsernaed@gmail.com. Thank you for your interest!\r\n \r\n\r\n\r\nRequirements to join:\r\n\r\n\r\n- Membership is open to students currently enrolled in chosen health professions, including careers in medicine (allopathic and osteopathic), dentistry, optometry, podiatry, veterinary medicine, and other health care professions requiring post baccalaureate study leading to an advanced degree.\r\n\r\n\r\n- Potential members must have completed at least three semesters or five quarters of health preprofessional studies work by the time of Induction with an overall cumulative GPA of at least 3.20 on a 4.0 scale (A = 4.00) and also with a cumulative GPA of 3.20 in the sciences – biology, chemistry, physics, and mathematics. \r\n- The Massachusetts Zeta chapter at Northeastern University will accept Associate Members. \r\n- Associate members will be considered full members of the Chapter but will not be formally inducted into it until they meet all the membership requirements. They will have access to all the events, meetings, panels, volunteer opportunities, and the mentorship program and can be elected into committee chair positions. However, they will not be able to run for full e-board positions until they have been inducted. \r\n\r\n\r\n \r\nDues:\r\n\r\n\r\nMembership in Alpha Epsilon Delta is an earned honor for life. There will be no annual dues for returning members for the 2023-2024 academic year. However, there is a one time fee of $90 for newly inducted members which goes to the National Organization. The money sent to the National Organization covers lifetime membership and a certificate.\r\n", + "num_members": 868, + "is_recruiting": "TRUE", + "recruitment_cycle": "fall", + "recruitment_type": "unrestricted", + "tags": [ + "Premed", + "Biology", + "Chemistry", + "Physics", + "Research", + "Volunteerism", + "Healthcare", + "CommunityOutreach" + ] + }, + { + "id": "45ac612d-0d8d-49b8-9189-aeb0e77f47e0", + "name": "Alpha Epsilon Phi", + "preview": "Alpha Epsilon Phi is a national sorority dedicated to sisterhood, community service and personal growth. AEPhi was founded at Northeastern University on May 6th, 1990, and to this day it continues to be a close-knit, compassionate community that fost", + "description": "Alpha Epsilon Phi is a national sorority dedicated to sisterhood, community service, and personal growth. AEPhi was founded at Northeastern University on May 6th, 1990, and to this day it continues to be a close-knit, compassionate community that fosters lifelong friendship and sisterhood. We seek to create an environment of respect and life-long learning through sister's various passions, community service, and engagement with various communities. Above all else, Alpha Epsilon Phi provides a home away from home for college women and unconditional friendships that will last far beyond the time spent at Northeastern University.", + "num_members": 883, + "is_recruiting": "TRUE", + "recruitment_cycle": "fall", + "recruitment_type": "application", + "tags": [ + "CommunityOutreach", + "Volunteerism", + "HumanRights", + "Sisterhood", + "CommunityService" + ] + }, + { + "id": "909905ff-45b5-4125-b8c9-25cc68e50511", + "name": "Alpha Epsilon Pi", + "preview": "Our basic purpose is to provide a comprehensive college experience for young men, fuel social and personal growth in our members, and create lasting friendships, mentorship, community and support for our diverse brotherhood", + "description": "Our basic purpose is to provide a comprehensive college experience for young men, and create lasting friendships, mentorship, community and support for our diverse brotherhood. Alpha Epsilon Pi, predicated off of socially and culturally Jewish values, strives to strengthen each member's strengths and helps them overcome their weaknesses, and emphasizes personal, professional and social growth. We believe our organization provides a unique opportunity that can not be found as easily through other mediums.", + "num_members": 426, + "is_recruiting": "TRUE", + "recruitment_cycle": "fall", + "recruitment_type": "application", + "tags": [ + "Judaism", + "CommunityOutreach", + "Mentorship", + "ProfessionalGrowth" + ] + }, + { + "id": "fb7664a0-2eaf-4fa8-889c-77910f265e29", + "name": "Alpha Kappa Alpha Sorority, Inc - Iota Gamma Chapter", + "preview": "Founded on the campus of Howard University in Washington, DC in 1908, Alpha Kappa Alpha Sorority is the oldest Greek-letter organization established by African American college-trained women. To trace its history is to tell a story of changing patter", + "description": "Founded on the campus of Howard University in Washington DC in 1908, Alpha Kappa Alpha Sorority is the oldest Greek-letter organization established by African American college-trained women. To trace its history is to tell a story of changing patterns of human relations in America in the 20th century. The small group of women who organized the Sorority was conscious of a privileged position as college-trained women of color, just one generation removed from slavery. They were resolute that their college experiences should be as meaningful and productive as possible. Alpha Kappa Alpha was founded to apply that determination. As the Sorority grew, it kept in balance two important themes: the importance of the individual and the strength of an organization of women of ability and courage. As the world became more complex, there was a need for associations which cut across racial, geographical, political, physical and social barriers. Alpha Kappa Alpha’s influence extends beyond campus quads and student interest. It has a legacy of service that deepens, rather than ends, with college graduation. The goals of its program activities center on significant issues in families, communities, government halls, and world assembly chambers. Its efforts constitute a priceless part of the global experience in the 21st century.", + "num_members": 264, + "is_recruiting": "TRUE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "application", + "tags": [ + "AfricanAmerican", + "CommunityOutreach", + "HumanRights", + "Volunteerism", + "PublicRelations" + ] + }, + { + "id": "e445d34e-5913-4d9f-a1a9-048c0bdf4c55", + "name": "Alpha Kappa Psi", + "preview": "Alpha Kappa Psi is a professional fraternity that welcomes all individuals with interest in business and provides its members with world-class professional and leadership development opportunities. Learn more at http://www.akpsineu.org/", + "description": "Alpha Kappa Psi is a professional fraternity that welcomes all individuals with interest in business and provides its members with world-class professional and leadership development opportunities. We focus on the values of ethics, education, and community leadership that are necessary to succeed in today's evolving world. Learn more at http://www.akpsineu.org/. ", + "num_members": 148, + "is_recruiting": "TRUE", + "recruitment_cycle": "spring", + "recruitment_type": "unrestricted", + "tags": [ + "Business", + "Leadership", + "ProfessionalDevelopment", + "CommunityOutreach", + "Ethics" + ] + }, + { + "id": "e644bf85-f499-4441-a7b6-aaf113353885", + "name": "Alpha Kappa Sigma", + "preview": "Alpha Kappa Sigma, established here in 1919, is one of Northeastern's only two local fraternities. We are a social fraternity open to anyone interested. Attend one of our fall or spring rush events for more information. Hope to meet you soon!", + "description": "Alpha Kappa Sigma, established here in 1919, is one of Northeastern's only two local fraternities. We are a social fraternity who place a strong emphasis on brotherhood, personal and professional growth, and creating lasting memories and lifelong friends. Attend one of our fall or spring rush events for more information. Hope to meet you soon!", + "num_members": 816, + "is_recruiting": "TRUE", + "recruitment_cycle": "spring", + "recruitment_type": "unrestricted", + "tags": [ + "CommunityOutreach", + "Volunteerism", + "SocialFraternity", + "Brotherhood" + ] + }, + { + "id": "3bb5894d-9a20-4fef-b9e4-245c1c65d52f", + "name": "Alpha Phi Omega", + "preview": "Alpha Phi Omega (APO) is a national co-ed service fraternity. We partner with over 70 community service organizations in Boston, foster a community of service-minded individuals, and promote leadership development.", + "description": "Alpha Phi Omega (APO) is a national coeducational service organization founded on the principles of leadership, friendship, and service. It provides its members the opportunity to develop leadership skills as they volunteer on their campus, in their community, to the nation, and to the organization. As a national organization founded in 1925, Alpha Phi Omega is the largest co-ed service fraternity in the world, with more than 500,000 members on over 375 campuses across the nation. Alpha Phi Omega is an inclusive group, open to all nationalities, backgrounds, and gender. APO provides the sense of belonging to a group while also providing service to the community by donating time and effort to various organizations. Our chapter partners with varied and diverse nonprofits in the Boston area. Some places we volunteer include Prison Book Program, Community Servings, Y2Y, National Braille Press, and the Boston Marathon. We also foster community through fellowship and leadership events.\r\nhttps://northeasternapo.com", + "num_members": 582, + "is_recruiting": "TRUE", + "recruitment_cycle": "spring", + "recruitment_type": "application", + "tags": [ + "Volunteerism", + "CommunityOutreach", + "Leadership", + "Service", + "Fellowship", + "HumanRights" + ] + }, + { + "id": "c6b5da00-6a21-4aca-bc6d-da4f65c40ce0", + "name": "American Academy of Orthopedic Manual Physical Therapists Student Special Interest Group", + "preview": "Develop skills in manual physical therapy & enhance use of current evidenced based manual physical therapy. AAOMPT sSIG serves to supplement the existing didactic education in the physical therapy curriculum to best prepare students for their future.", + "description": "The American Academy of Orthopaedic Manual Physical Therapy (AAOMPT) is an organization that fosters learning and research in orthopedic manual physical therapy. The student special interest group (sSIG) encourages students to develop skills in manual physical therapy and enhance their use of current evidenced based manual physical therapy. Since the curriculum is only able to provide an introduction to manual therapy, this organization serves to supplement the existing didactic education to best prepare students for their co-operative education, clinical rotations, and future career.", + "num_members": 348, + "is_recruiting": "FALSE", + "recruitment_cycle": "always", + "recruitment_type": "unrestricted", + "tags": [ + "PhysicalTherapy", + "Healthcare", + "StudentOrganization", + "Education", + "EvidenceBasedPractice" + ] + }, + { + "id": "9eb69717-b377-45ee-aad5-848c1ed296d8", + "name": "American Cancer Society On Campus at Northeastern University", + "preview": "A student group on campus supported by the American Cancer Society that is dedicated to education raising awareness and bringing the fight against cancer to the Northeastern community. We do this in four major ways including; Advocacy, Education, Sur", + "description": "A student group on campus supported by the American Cancer Society that is dedicated to education raising awareness and bringing the fight against cancer to the Northeastern community. We do this in four major ways including; Advocacy, Education, Survivorship, and Relay For Life.\r\n \r\nWe host many events throughout the year, including Kickoff, Paint the Campus Purple, a Luminaria Ceremony on Centennial Quad, Real Huskies Wear Pink, the Great American Smoke Out, and Relay For Life, in addition to attending off campus events.", + "num_members": 966, + "is_recruiting": "TRUE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "application", + "tags": [ + "Advocacy", + "Education", + "Survivorship", + "CommunityOutreach", + "Volunteerism", + "EnvironmentalAdvocacy", + "PublicRelations" + ] + }, + { + "id": "04ad720a-5d34-4bb1-82bf-03bcbb2d660f", + "name": "American College of Clinical Pharmacy Student Chapter of Northeastern University", + "preview": "The objective of the ACCP chapter at Northeastern University is to improve human health by extending the frontiers of clinical pharmacy. Our mission is to concentrate on helping students understand the roles and responsibilities of various specialtie", + "description": "The objective of the ACCP chapter at Northeastern University is to improve human health by extending the frontiers of clinical pharmacy. Our mission: Concentrate on helping students understand the roles and responsibilities of various specialties of the clinical pharmacist Explore all the opportunities that exist for students as future experts in this field Provide leadership, professional development, advocacy, and resources that enable student pharmacists to achieve excellence in academics, research, and experiential education Advance clinical pharmacy and pharmacotherapy through the support and promotion of research, training, and education.", + "num_members": 436, + "is_recruiting": "TRUE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "application", + "tags": [ + "Biology", + "Chemistry", + "Pharmacotherapy", + "Research", + "ClinicalPharmacy", + "StudentChapter" + ] + }, + { + "id": "eaffd96d-f678-4c2e-8ca7-842c8e34d30b", + "name": "American Institute of Architecture Students", + "preview": "We are a resource to the students, the School of Architecture, and the community. We focus on providing students with more networking, leisure, and professional opportunities. We, the students, have the power to change the profession that we will ent", + "description": "The American Institute of Architecture Students (AIAS) is an independent, nonprofit, student-run organization dedicated to providing unmatched progressive programs, information, and resources on issues critical to architecture and the experience of education. The mission of the AIAS is to promote excellence in architectural education, training, and practice; to foster an appreciation of architecture and related disciplines; to enrich communities in a spirit of collaboration; and to organize students and combine their efforts to advance the art and science of architecture. Learn more at: aias.org.\r\nFreedom by Design (FBD) constructs small service projects in the chapter’s community.\r\nThe Northeastern AIAS chapter offers many events throughout the school year that aim to meet the national mission. We host firm crawls that allow students to visit local firms in Boston and Cambridge to provide a sense of firm culture expectations and realities. It offers a mentorship program for upper and lower class students to meet and network, and provide a guide for lower class students as they begin in the architecture program. Northeastern’s chapter also host BBQ’s, game nights, and other architecture related events.", + "num_members": 462, + "is_recruiting": "TRUE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "application", + "tags": [ + "Architecture", + "CommunityOutreach", + "Mentorship", + "Networking", + "Volunteerism" + ] + }, + { + "id": "932ef793-9174-4f7c-a9ed-f8ec0c609589", + "name": "American Institute of Chemical Engineers of Northeastern University", + "preview": "American Institute of Chemical Engineers is a national organization that caters to the needs of Chemical Engineers. The organization fosters connections between Undergraduate students, Graduate students and Professions in the Chemical Engineering fie", + "description": "American Insitute of Chemical Engineers is a national organization that caters to the needs of Chemical Engineers. The organization fosters connections between Undergraduate students, Graduate students and Professions in the Chemical Engineering field. AIChE exists to promote excellence in the Chemical Engineering profession. The organization also strives to promote good ethics, diversity and lifelong development for Chemical Engineers. We host informative and social events that include student panels, industry talks, lab tours, and a ChemE Department BBQ!\r\n \r\nWe also have a Chem-E-Car team that works on building and autonomous shoe box sized car powered by chemical reaction developed by students. On the day of competition we learn the distance the car has to travel and based on our calibration curves determine the quantity of reactants required for the car to travel that distance holding a certain amount of water.", + "num_members": 756, + "is_recruiting": "FALSE", + "recruitment_cycle": "fall", + "recruitment_type": "unrestricted", + "tags": [ + "ChemicalEngineering", + "StudentOrganization", + "STEM", + "CommunityOutreach" + ] + }, + { + "id": "ceb51c75-1fed-461e-94bd-fb2ae1cc5b96", + "name": "American Society of Civil Engineers", + "preview": "Northeastern University Student Chapter of the American Society of Civil Engineers", + "description": "Founded in 1852, the American Society of Civil Engineers (ASCE) represents more than 145,000 members of the civil engineering profession worldwide and is America’s oldest national engineering society.\r\nNortheastern University's ASCE student chapter (NU ASCE) help their members develop interpersonal and professional relationships through a variety of extracurricular activities and community service projects within the field of civil and environmental engineering. Each week we hold a lecture presented by a different professional working in civil and environmental engineering careers. We work closely with a variety of civil and environmental engineering clubs and organizations, such as Engineers Without Borders (EWB), Steel Bridge Club, Concrete Canoe, the Institute of Transportation Engineers (ITE), Northeastern University Sustainable Building Organization (NUSBO), and New England Water Environmental Association (NEWEA); and we participate in the Concrete Canoe and Steel Bridge competitions. NU ASCE also coordinates with Chi Epsilon Civil Engineering Honor Society to organize tutoring for civil and environmental engineering students, and has helped with 30 years of community service projects.", + "num_members": 327, + "is_recruiting": "FALSE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "application", + "tags": [ + "CivilEngineering", + "CommunityOutreach", + "Volunteerism", + "EnvironmentalScience", + "ProfessionalDevelopment" + ] + }, + { + "id": "b671c4ca-fb48-4ffd-b9be-1c9a9cd657d0", + "name": "American Society of Mechanical Engineers", + "preview": "We are a campus chapter of the American Society of Mechanical Engineers. We host weekly industry meetings from professionals across the field, workshops to gain hands-on skills, a Solidworks certification course, and more events for the MechE communi", + "description": "We are a campus chapter of the American Society of Mechanical Engineers. We bring in representatives of companies and other professionals to talk to students about engineering companies as well as new and upcoming information/technology in the field. It is a great way to make connections and explore your future career. We also teach an advanced 3D modeling training course (SolidWorks) to better prepare students for their Co-ops. We aim to help students grow as professionals, gain experience, and build a healthy resume.", + "num_members": 43, + "is_recruiting": "TRUE", + "recruitment_cycle": "fall", + "recruitment_type": "application", + "tags": [ + "MechanicalEngineering", + "Engineering", + "Networking", + "CareerDevelopment", + "Technology", + "ProfessionalDevelopment" + ] + }, + { + "id": "94d09445-715c-4618-9d59-de4d52e33bb3", + "name": "Anime of NU", + "preview": "Twice every week, we watch and discuss Japanese anime and culture. This is a club where you come, watch a couple of episodes, laugh and cry with everyone, then chat about it afterward. \r\n\r\nMake sure to join our discord: https://discord.gg/pwrMBptJ3m", + "description": "Do you like stories of traveling to a new world and defeating villains? How about stories of love and sacrifice? Maybe you're more into suspense and drama? At Anime of NU, we offer all of that and more! We are a club with one simple objective: to watch and discuss Japanese anime and culture. Every week, we watch a slice-of-life (typically more humorous, romantic, and/or heartfelt) and action (do we need to explain what \"action\" is?) anime, and we also throw in some seasonal movies and activities. We also act as a social space for members. This is a club where you come, watch a couple of episodes, laugh and cry with everyone, then chat about it afterward. It's a fun time for the whole family!\r\n---\r\nTime and locations coming soon!\r\nMake sure to join us in Discord here so you can get all the updates and vote on which shows we'll watch!", + "num_members": 302, + "is_recruiting": "FALSE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "application", + "tags": [ + "AsianAmerican", + "VisualArts", + "CreativeWriting", + "Music", + "CommunityOutreach" + ] + }, + { + "id": "4f13622f-446a-4f62-bfed-6a14de1ccf87", + "name": "Arab Students Association at Northeastern University", + "preview": "Our purpose is to bring Arab students attending Northeastern University together to create connections and friendships. Also, we raise awareness about Arabs' diverse and unique cultures, values, and customs within the entire Northeastern Community.", + "description": "Arab Students Association at Northeastern University looks to create a space for students of Arab backgrounds, as well as those who seek to create connections with the Arab culture and world, to mingle and meet one another. We also look to bring all Arab students attending Northeastern University together and make them raise awareness of their diverse and unique cultures, values, and customs within the entire Northeastern Community. Also, the ASA will provide its members, both Arab and non-Arab, with the needed academic and career support in order for them to excel and succeed.", + "num_members": 28, + "is_recruiting": "FALSE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "unrestricted", + "tags": [ + "Islam", + "CommunityOutreach", + "HumanRights", + "Volunteerism", + "PublicRelations" + ] + }, + { + "id": "d507318e-7b37-4750-83c0-163ccd4ef946", + "name": "Armenian Student Association at Northeastern University", + "preview": "ASANU brings together Armenian students within Northeastern University and its nearby schools. It works to introduce Armenian history, language, music, dance, and current events to all its members in an effort to preserve the culture through educatio", + "description": "ASA brings together the Armenian students within Northeastern University. It introduces Armenian history, language, music, dance, current events, and food to all Armenian and non-Armenian members of the University. Additionally, ASA works closely with the ASA groups with other colleges in the Boston area including BU, BC, Bentley, MCPHS, Tufts, Harvard, and MIT, but we are not directly affiliated with them.\r\nIf you are at all interested in joining or would like to learn more about what we do, please feel free to reach out to the E-Board at asa@northeastern.edu or find us on instagram @asanortheastern", + "num_members": 727, + "is_recruiting": "TRUE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "unrestricted", + "tags": [ + "ArmenianCulture", + "CommunityOutreach", + "InternationalRelations", + "Diversity", + "Food", + "History" + ] + }, + { + "id": "36f7fa45-c26c-498a-8f63-f48464d97682", + "name": "Art Blanche at NEU", + "preview": "Art Blanche provides space for everyone to express their visions and ideas through art (painting, drawing, doodling, etc), aka weekly hang-out with other creative and artistic people. Skills & experience do not matter as long as you are open-minded.", + "description": "Art Blanche is an art club at NEU that provides art enthusiasts unlimited options to express their creativity. We want to unite everyone interested in creating art and arrange a place where students can express themselves through any fine art. We welcome any 2D and 3D media. We want to give proficient artists a chance to improve their skills through communication and help from other fellow-artists. We will arrange \"critique rounds,\" where we would discuss each other's work and share tips and tricks.\r\nApart from having proficient artists, we also welcome newcomers interested in learning how to do art and express their voice through the art form. By inviting professional artists and students to teach and lecture at our club, newcomers as well as more proficient artist will be able to develop and improve their own style. \r\nWe will organize \"life drawing \" sessions to do figure studies. Having the Museum of Fine Arts right around the corner we will take advantage of it to seek inspiration for our own work by arranging visits and guiding a group discussion. \r\nAt the end of each semester we will arrange student exhibitions presenting work created during the last months.", + "num_members": 816, + "is_recruiting": "TRUE", + "recruitment_cycle": "spring", + "recruitment_type": "application", + "tags": [ + "VisualArts", + "CreativeWriting", + "CommunityOutreach", + "Film" + ] + }, + { + "id": "88326fe6-1683-4bcc-b01e-4eed7b9ecbfe", + "name": "Art4All", + "preview": "Art4All is committed to giving every student an equitable opportunity to foster their creativity. Our free Boston-based virtual mentoring programs and community partnerships view students first and foremost as creators, building more resources for al", + "description": "Art4All believes the key to addressing these inequities relies on supporting students and their pursuits at the community and individual level. All our resources are tailored to incorporate the ACE model, which serves as the three main values of Art4All’s mission: accessibility, creativity, and education. Our free Boston-based virtual mentoring programs and community partnerships view students first and foremost as creators — each with unique and individual challenges that require personalized guidance and support. Art4All also organizes arts-based fundraisers and student exhibitions, giving students a quality means and open platform to confidently express their art to the communities. We work in collaboration with EVKids and other community partners. ", + "num_members": 690, + "is_recruiting": "TRUE", + "recruitment_cycle": "spring", + "recruitment_type": "application", + "tags": [ + "VisualArts", + "CreativeWriting", + "CommunityOutreach", + "Volunteerism", + "HumanRights" + ] + }, + { + "id": "462f3a2f-3b06-4059-9630-c399062f2378", + "name": "Artificial Intelligence Club", + "preview": "Step into the world of artificial intelligence where learning knows no bounds. Join us to explore, create, and innovate through projects, discussions, and a community passionate about the limitless potential of AI and its responsible and ethical use.", + "description": "Welcome to the Artificial Intelligence Club, where you can embark on an exciting journey into the realm of artificial intelligence. Our club is a vibrant hub for those curious minds eager to delve into the endless possibilities AI offers. Through engaging projects, thought-provoking discussions, and a supportive community, we aim to foster creativity, innovation, and a deep understanding of the responsible and ethical applications of AI. Join us in shaping the future through exploration, collaboration, and a shared passion for the diverse facets of artificial intelligence!", + "num_members": 468, + "is_recruiting": "TRUE", + "recruitment_cycle": "fall", + "recruitment_type": "unrestricted", + "tags": [ + "ArtificialIntelligence", + "DataScience", + "SoftwareEngineering", + "Technology", + "STEM" + ] + }, + { + "id": "80d516fa-748d-4400-9443-0e2b7849b03f", + "name": "Artistry Magazine", + "preview": "Artistry Magazine is an online and print publication that features articles and student artwork related to any and all forms of art and culture. We welcome all into our community\u00a0and encourage students to engage with the arts and the city of Boston.", + "description": "Artistry Magazine is an online and print publication that features articles and student artwork related to any and all forms of art and culture. We welcome all into our community and encourage students to engage with the arts on Northeastern's campus and throughout the city of Boston. We are always looking for talented writers, photographers, and designers to work on web content as well as the semesterly magazine. Check out our website and social media to learn more about the organization and how to get involved and click here to read our latest issue!", + "num_members": 501, + "is_recruiting": "FALSE", + "recruitment_cycle": "spring", + "recruitment_type": "application", + "tags": [ + "CreativeWriting", + "VisualArts", + "Journalism", + "CommunityOutreach" + ] + }, + { + "id": "2f0f69a5-0433-4d62-b02a-8081895e8f69", + "name": "Asian American Center (Campus Resource)", + "preview": "The Asian American Center at Northeastern seeks to establish a dynamic presence of the Asian American community at the University. The role of the Center at Northeastern is to ensure the development and enhancement of the University\u2019s commitment to t", + "description": "The Asian American Center at Northeastern seeks to establish a dynamic presence of the Asian American community at the University. The role of the Center at Northeastern is to ensure the development and enhancement of the University’s commitment to the Asian American community. In providing the Asian American community a vehicle for increasing visibility on campus, the Center aims to support student exploration of social identity development and empower students to take an active role in shaping their experiences at Northeastern. To that end, the Center strives to promote continued dialogue on the rich diversity and complexity of the Asian American experience, and how that complexity manifests itself in various aspects of life within and outside of the University.", + "num_members": 36, + "is_recruiting": "TRUE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "application", + "tags": [ + "AsianAmerican", + "CommunityOutreach", + "HumanRights", + "Soccer", + "Journalism" + ] + }, + { + "id": "4c8fe4dd-d1df-46b0-a317-3b11dbde5f62", + "name": "Asian Pacific American Law Student Association", + "preview": "The Asian Pacific American Law Students Association (APALSA) is an organization for Asian American and Pacific Islander (AAPI) students at Northeastern University School of Law, including Native Hawaiian, Pacific Islander, South Asian, Southeast Asia", + "description": "The Asian Pacific American Law Students Association (APALSA) is an organization for Asian American and Pacific Islander (AAPI) students at Northeastern University School of Law, including Native Hawaiian, Pacific Islander, South Asian, Southeast Asian, East Asian, mixed-race and other students who identify under the AAPI umbrella. In addition to providing a social and academic support network for AAPI students at the law school, APALSA is active both in the Boston community and on campus. APALSA works with the law school administration and other student organizations, and is represented on the Admissions Committee and the Committee Against Institutional Racism (CAIR). Throughout the year, APALSA hosts various social, educational and professional events for both AAPI law students and law students in general.", + "num_members": 560, + "is_recruiting": "TRUE", + "recruitment_cycle": "spring", + "recruitment_type": "application", + "tags": [ + "AsianAmerican", + "CommunityOutreach", + "Volunteerism", + "HumanRights" + ] + }, + { + "id": "6639903c-fc70-4c60-b7dc-7362687f1fcc", + "name": "Asian Student Union", + "preview": "We are a student organization that strives towards culturally sensitive advising, advocacy, services, programs, and resources for the Asian-American students of Northeastern University as well as the neighboring area.", + "description": "We are a community that strives towards culturally sensitive advising, advocacy, services, programs, and resources for the Asian American students of Northeastern University as well as the neighboring area. This organization provides resources for prospective, current or alumni students, offering insight into the Asian American community and experience at Northeastern. We strive in promoting Asian American Spirit, Culture and Unity.", + "num_members": 650, + "is_recruiting": "FALSE", + "recruitment_cycle": "spring", + "recruitment_type": "application", + "tags": [ + "AsianAmerican", + "CommunityOutreach", + "CulturalAdvising", + "Volunteerism" + ] + }, + { + "id": "1efe34c1-0407-4194-ab48-a502027b82ee", + "name": "ASLA Adapt", + "preview": "Northeastern University's only organization centered on landscape design! Advocate for climate action and environmental justice while exploring landscape architecture and adjacent topics.", + "description": "Adapt is Northeastern’s organization centered on urban landscape design and the professional association for Landscape Architecture students. As a student affiliate chapter of the American Society of Landscape Architects (ASLA) we are working towards growing our department and getting it accredited, advocating for climate action and environmental justice, networking with environmental designers, and encouraging the adaptation of landscape architecture to our ever-changing world. Join us in exploring topics regarding landscape architecture, ecology, environmental science/engineering, urban planning, and related fields! An interest in the landscape is all that is needed to participate, all majors welcome!", + "num_members": 272, + "is_recruiting": "TRUE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "application", + "tags": [ + "EnvironmentalScience", + "UrbanPlanning", + "Networking", + "ClimateAction", + "Ecology" + ] + }, + { + "id": "99056e3a-ef6e-4af9-8d46-6ecfa2133c63", + "name": "Aspiring Product Managers Club", + "preview": "Aspiring Product Managers Club at Northeastern University aims to bring like-minded individuals who want to learn more about Product and eventually break into the Product Management domain.", + "description": "Aspiring Product Managers Club at Northeastern University aims to bring like-minded individuals who want to learn more about Product and eventually break into the Product Management domain.\r\nTill today we have conducted 80+ events with 800+ participants where our events were broadly classified as – meetups, Mock Interviews, Workshops, Speaker Series, and Case Study.\r\nThis spring 2024 semester, we plan to bring several upgrades to our flagship programs and several new engaging programs for our members!\r\nWe are expanding and have started working on real-time products with members as product managers. Come join us to get a slice of a product manager's life!\r\n ", + "num_members": 265, + "is_recruiting": "TRUE", + "recruitment_cycle": "fall", + "recruitment_type": "unrestricted", + "tags": [ + "SoftwareEngineering", + "DataScience", + "Networking", + "Workshops", + "SpeakerSeries", + "ProductManagement" + ] + }, + { + "id": "090c4686-d0a8-40ea-ab9d-417858cec69f", + "name": "Association of Latino Professionals for America", + "preview": "ALPFA, founded in 1972, stands for the Association of Latino Professionals For America. ALPFA is a national non-profit organization that has become the largest Latino Association for business professionals and students with more than 21,000 members\u00a0", + "description": "ALPFA, founded in 1972, stands for the Association of Latino Professionals For America. ALPFA is a national non-profit organization that has become the largest Latino Association for business professionals and students with more than 21,000 members nationwide (this includes 43 professional and over 135 student chapters). ALPFA serves as the catalyst connecting professionals with decision makers at Fortune 1000 partners and other corporate members seeking diverse opportunities. In addition, ALPFA has developed various events at a local and national level to prepare students from college to career-ready professionals through mentorship, leadership training and development, job placement and community volunteerism. ALPFA-NU was officially recognized in February of 2014 and has successfully become the first student chapter in the city of Boston to continue the growth of the organization with the mission to empower the growth of diverse leaders through networking, professional development, and career opportunities with our corporate sponsors.", + "num_members": 78, + "is_recruiting": "FALSE", + "recruitment_cycle": "fall", + "recruitment_type": "unrestricted", + "tags": [ + "LatinAmerica", + "CommunityOutreach", + "Networking", + "ProfessionalDevelopment", + "LeadershipTraining" + ] + }, + { + "id": "3d55e6e2-74bc-41da-bc4d-db75b05afd43", + "name": "Baja SAE Northeastern", + "preview": "NU Baja is a student-run competition team that designs, builds, and races a single-seat, off-road vehicle. Our team members learn valuable skills in design, manufacturing, and leadership. Visit our website to learn more and join the mailing list!\r\n", + "description": "NU Baja is for anyone interested in learning by doing. We are a close-knit team that designs, builds, and races a vehicle from the ground up. Our team members learn the engineering design cycle, CAD, manufacturing techniques, management skills, and leadership qualities. We welcome new members at any experience level! \r\nEvery year, our team races a high-performance vehicle in national Baja SAE collegiate design competitions. The challenges include rock crawls, hill climbs, and a grueling four-hour endurance race. We are a group of highly motivated (mostly) engineers that work together to create a vehicle capable of withstanding these obstacles and outperforming hundreds of other colleges from around the world. \r\nIf this sounds like something that interests you, please sign up for our mailing list! Mailing List Signup\r\nBaja Promo Video", + "num_members": 277, + "is_recruiting": "FALSE", + "recruitment_cycle": "fall", + "recruitment_type": "unrestricted", + "tags": [ + "MechanicalEngineering", + "EngineeringDesign", + "Racing", + "Teamwork", + "Leadership" + ] + }, + { + "id": "cd5983f5-b1e9-4e5e-b948-e04915a22f64", + "name": "Bake It Till You Make It", + "preview": "Bake It Till You Make It aims to cultivate an inclusive community for students to share and expand their love of baking!", + "description": "Bake It Till You Make It is an organization to bring students together who have an interest or passion for baking. Whether you're a seasoned pastry chef or a novice in the kitchen, our club provides a space to explore the art of baking, share delicious recipes, and foster a love for all things sweet. Come join us, and let's bake memories together!", + "num_members": 719, + "is_recruiting": "FALSE", + "recruitment_cycle": "fall", + "recruitment_type": "application", + "tags": [ + "VisualArts", + "CreativeWriting", + "CommunityOutreach" + ] + }, + { + "id": "7c8dd808-ee6f-4057-838b-3fde54fb3389", + "name": "BAPS Campus Fellowship", + "preview": "BCF meets weekly for discussion based on BAPS Swaminarayan concepts and teachings. Students discuss topics that affect them in college and will be able to learn to balance their life as college student while practicing the Hindu faith.", + "description": "Through youth group discussions, campus events, and community service projects, students will have the opportunity to introduce the Hindu faith to the rest of the NEU community!", + "num_members": 418, + "is_recruiting": "TRUE", + "recruitment_cycle": "fallSpring", + "recruitment_type": "unrestricted", + "tags": [ + "Hinduism", + "CommunityOutreach", + "Volunteerism", + "PublicRelations" + ] + }, + { + "id": "25e9b53e-f0aa-4108-9da2-9a3ce4727293", + "name": "Barkada", + "preview": "NU Barkada is NEU's Filipino culture organization. Our mission is to promote diversity and fellowship by sharing the richness of Filipino heritage through member and community engagement in cultural, educational, and social activities.", + "description": "Northeastern University's Barkada began as a small group of Filipino/Filipino-American students who aspired to have their culture recognized at the university. They wanted to have an organization that united people who embrace Filipino culture and wish to spread it through cultural, educational, and social activities. With hard work, dedication, and the aid of their club advisor Dean Perkins, Barkada became an official NU organization on January 26, 1998. Throughout its years as an established student organization, NU Barkada has grown to become a bigger family than its founders had ever imagined. However, the organization still holds true to the guidelines and values set forth by its founders, and continues to build upon their strong foundation. \"Barkada\" is a word from the one of the main Filipino languages, Tagalog, which means \"group of friends.\" We embrace each and every one of our members as not only friends, but family, as well.\r\nNU Barkada's logo, from one aspect, resembles the Nipa Hut, a bamboo shelter built in the rural, coastal areas of the Philippines. Barkada, like the Nipa Hut, provides its members with support and is built to withstand adverse conditions, day-in and day-out. Sheltered within the Nipa Hut beneath the sun and the moon, the flag of the Philippines symbolizes the rich Filipino culture from which Barkada draws its roots. The logo also resembles two people, hand-in-hand, dancing Tinikling, a Filipino cultural dance. This encompasses one of the primary goals of NU Barkada, which is to educate others about the Filipino culture and try to bridge the gap that separates people from different walks of life.Keep up with us at all of our social medias, which are linked below! Peace, Love, Barkada! \u2764\ufe0f", + "num_members": 853, + "is_recruiting": "TRUE", + "recruitment_cycle": "spring", + "recruitment_type": "application", + "tags": [ + "AsianAmerican", + "CommunityOutreach", + "PerformingArts", + "VisualArts", + "Volunteerism" + ] + } + ], + "events": [ + { + "id": "cbb7c083-271e-4756-a738-deb4bf322094", + "club_id": "9231a677-ee63-4fae-a3ab-411b74a91f09", + "name": "Event for (Tentative ) Linguistics Club", + "preview": "This club is holding an event.", + "description": "Join us for an exciting evening of linguistic exploration at our Phonetics Workshop! Led by a guest speaker with expertise in phonetics, this hands-on workshop will delve into the fascinating world of speech sounds. Whether you're a seasoned linguistics major or simply curious about the mechanics of language, this event is perfect for all levels of interest. Get ready to practice phonetic transcription, learn about different speech sounds from around the world, and engage in lively discussions with fellow language enthusiasts. Snacks and refreshments will be provided, so come along for a fun and educational experience with the Linguistics Club!", + "event_type": "hybrid", + "start_time": "2024-07-21 12:15:00", + "end_time": "2024-07-21 15:15:00", + "tags": [ + "CommunityOutreach", + "VisualArts" + ] + }, + { + "id": "a395dc08-dc7c-4491-86eb-2a9c4e437c19", + "club_id": "9231a677-ee63-4fae-a3ab-411b74a91f09", + "name": "Event for (Tentative ) Linguistics Club", + "preview": "This club is holding an event.", + "description": "Join the Linguistics Club for an engaging workshop on phonetic transcription techniques! Whether you're a seasoned linguistics major or someone just starting to explore the field, this event is designed to be inclusive and educational for all. Dive into the fascinating world of speech sounds with hands-on activities and guidance from experienced club members. Don't miss this opportunity to improve your skills and connect with fellow language enthusiasts in a fun and welcoming environment!", + "event_type": "hybrid", + "start_time": "2024-08-08 23:30:00", + "end_time": "2024-08-09 01:30:00", + "tags": [ + "CreativeWriting" + ] + }, + { + "id": "c535afcb-1269-4125-9f67-fbcd953478d0", + "club_id": "9231a677-ee63-4fae-a3ab-411b74a91f09", + "name": "Event for (Tentative ) Linguistics Club", + "preview": "This club is holding an event.", + "description": "Join the (Tentative) Linguistics Club for an engaging evening of linguistic exploration at our upcoming Phonetics Workshop! Whether you're a seasoned phonetics pro or brand new to the world of phonetic transcription, this workshop is designed to be fun and informative for all. Dive into the fascinating world of articulatory phonetics, learn key transcription symbols, and practice transcribing words in a supportive and inclusive environment. Bring your questions, curiosity, and enthusiasm, and get ready to improve your phonetic skills while bonding with fellow language enthusiasts. This hands-on workshop promises to be a fantastic opportunity for students of all backgrounds to deepen their understanding of linguistics in a welcoming setting. We can't wait to see you there!", + "event_type": "virtual", + "start_time": "2025-02-06 15:00:00", + "end_time": "2025-02-06 19:00:00", + "tags": [ + "PerformingArts", + "VisualArts" + ] + }, + { + "id": "977ac58a-98a8-4030-bf3d-d2f46262fcef", + "club_id": "5a22f67a-506f-447d-b014-424cab9adc14", + "name": "Event for Adopted Student Organization", + "preview": "This club is holding an event.", + "description": "Join us for an engaging panel discussion at the Adopted Student Organization's upcoming event where adoptees from diverse backgrounds will share their unique adoption journeys. This interactive session will provide valuable insights into the complexities and triumphs of adoption, creating a supportive environment for open dialogue and shared experiences. Whether you're an adoptee, a prospective adoptive parent, or simply curious about adoption, this event promises to be enlightening and inspiring for all attendees. Come connect with our community and gain a deeper understanding of the impact of adoption on individuals and society as a whole.", + "event_type": "in_person", + "start_time": "2026-11-09 12:30:00", + "end_time": "2026-11-09 14:30:00", + "tags": [ + "CreativeWriting" + ] + }, + { + "id": "28292af9-36c3-4b23-8294-1a3565a6d7db", + "club_id": "5a22f67a-506f-447d-b014-424cab9adc14", + "name": "Event for Adopted Student Organization", + "preview": "This club is holding an event.", + "description": "Join the Adopted Student Organization for an engaging evening of storytelling and discussion at our upcoming event, 'Adoption Tales: Sharing Our Journeys'. We invite adoptees, adopted parents, and anyone curious about adoption to come together in a supportive environment where heartfelt stories are shared, and unique perspectives are celebrated. Through open dialogue and respectful exchanges, we aim to deepen understanding and connections within the adoptee community while shedding light on the diverse experiences that shape our identities. Whether you're an adoptee eager to connect with like-minded individuals or someone looking to learn more about adoption, this event promises to be a welcoming space where stories are honored, voices are heard, and bonds are formed. Let's come together to embrace our shared journeys and inspire each other to embrace the richness of being part of the adoptee community.", + "event_type": "in_person", + "start_time": "2024-11-07 18:15:00", + "end_time": "2024-11-07 22:15:00", + "tags": [ + "HumanRights" + ] + }, + { + "id": "71b2fe36-201c-467f-9edc-72f2c4dbce6d", + "club_id": "e90b4ec8-1856-4b40-8c40-e50b694d10de", + "name": "Event for Automotive Club", + "preview": "This club is holding an event.", + "description": "Join the Automotive Club for an unforgettable evening of classic car showcase and appreciation, where seasoned collectors mingle with newcomers eager to learn and share their love for automobiles. Discover the intricate stories behind vintage models and modern marvels as passionate members recount their journeys of restoration and customisation. Engage in lively discussions on the evolution of automotive design, technology, and performance, guided by knowledgeable enthusiasts who bring a wealth of experience and expertise to the conversations. Whether you're a devoted gearhead or a curious newcomer, this event promises to inspire, educate, and connect you with like-minded individuals who share your enthusiasm for all things automotive.", + "event_type": "hybrid", + "start_time": "2025-02-24 22:30:00", + "end_time": "2025-02-25 02:30:00", + "tags": [ + "CommunityOutreach", + "Automotive" + ] + }, + { + "id": "d8a6184a-963a-4ca1-b253-0115398529ef", + "club_id": "c79371ac-d558-463a-b73a-b8b3d642f667", + "name": "Event for Baltic Northeastern Association", + "preview": "This club is holding an event.", + "description": "Join us at Baltic Northeastern Association's upcoming event to immerse yourself in the vibrant culture of the Baltic countries! This week, we will be hosting a special cooking session where you can learn how to prepare traditional Baltic dishes while bonding with fellow members. Whether you're a seasoned chef or a novice in the kitchen, this event is a wonderful opportunity to connect, learn, and savor the flavors of the Baltics. Don't miss out on this chance to experience the warmth and richness of our community through the art of cooking!", + "event_type": "virtual", + "start_time": "2025-04-13 22:15:00", + "end_time": "2025-04-13 23:15:00", + "tags": [ + "CommunityOutreach", + "PerformingArts", + "Language" + ] + }, + { + "id": "3fa19d1a-5802-453d-bc23-0e901eb11d2f", + "club_id": "c79371ac-d558-463a-b73a-b8b3d642f667", + "name": "Event for Baltic Northeastern Association", + "preview": "This club is holding an event.", + "description": "Join us at the Baltic Northeastern Association's upcoming event for an exciting exploration of Baltic cuisine! Delve into the flavors and traditions of the Baltic countries as we come together to prepare and savor delicious dishes such as cepelinai, herring salad, and \u0161akotis. Whether you're a seasoned chef or a novice in the kitchen, this event promises a fun and interactive experience where you can learn, cook, and taste the richness of Baltic culinary heritage. Don't miss out on this unique opportunity to bond over food and culture with fellow students passionate about the Baltic region!", + "event_type": "virtual", + "start_time": "2025-06-22 18:15:00", + "end_time": "2025-06-22 20:15:00", + "tags": [ + "International", + "CommunityOutreach" + ] + }, + { + "id": "0856a62e-4ede-44f8-8edb-23f375775bdd", + "club_id": "c79371ac-d558-463a-b73a-b8b3d642f667", + "name": "Event for Baltic Northeastern Association", + "preview": "This club is holding an event.", + "description": "Join us this Friday for our weekly meeting at the Baltic Northeastern Association where we will immerse ourselves in the rich and vibrant culture of the Baltic countries. In this session, we will be showcasing traditional Baltic cuisine, engaging in lively discussions about our unique heritage, and even learning a few Baltic dance moves. Whether you're from the Baltic region or simply curious about our culture, all are welcome to come together, connect, and celebrate the charm of the North East in a warm and welcoming environment.", + "event_type": "virtual", + "start_time": "2026-09-17 22:30:00", + "end_time": "2026-09-17 23:30:00", + "tags": [ + "CommunityOutreach", + "PerformingArts", + "Cultural", + "Language", + "International" + ] + }, + { + "id": "9e63bfa1-1d15-42f7-9893-fdefbf1a7818", + "club_id": "b6c13342-3ddf-41b6-a3a0-a6d8f1878933", + "name": "Event for Bangladeshi Organization of Networking, Diversity, Heritage, Unity and Support", + "preview": "This club is holding an event.", + "description": "Join us for our upcoming Eid celebration, where we will come together to commemorate this joyous occasion with traditional Bangladeshi customs, delicious food, and vibrant cultural performances. This event is open to all members, providing a warm and inclusive space to connect, share, and learn about the rich heritage of Bangladesh. Whether you are a Bangladeshi international student, a diaspora-born member, or simply interested in our culture, this festive gathering promises to be a memorable experience filled with laughter, friendship, and a deep sense of community spirit.", + "event_type": "in_person", + "start_time": "2026-08-08 18:30:00", + "end_time": "2026-08-08 20:30:00", + "tags": [ + "AsianAmerican" + ] + }, + { + "id": "d3e1f0c7-cc83-4659-b5fa-78d54190da75", + "club_id": "b6c13342-3ddf-41b6-a3a0-a6d8f1878933", + "name": "Event for Bangladeshi Organization of Networking, Diversity, Heritage, Unity and Support", + "preview": "This club is holding an event.", + "description": "Join us for an exciting Cultural Celebrations event where we will immerse ourselves in the beauty of Bangladeshi culture, honoring significant events like Pohela Boishakh (New Year's Day), Ekushe February (International Mother Language Day), and Shadhinota Dibosh (Independence Day). Experience the rich traditions, vibrant colors, and heartfelt celebrations that define our heritage. Whether you are Bangladeshi or simply interested in learning more about our culture, this event is open to all who want to share in the joy and festivities of our community. Come celebrate with us and be part of a truly inclusive and uplifting experience!", + "event_type": "hybrid", + "start_time": "2026-02-08 18:30:00", + "end_time": "2026-02-08 22:30:00", + "tags": [ + "Collaborations", + "CommunityOutreach", + "AsianAmerican" + ] + }, + { + "id": "787742bf-2a56-4b2a-bbaf-abe1c88beb5b", + "club_id": "b6c13342-3ddf-41b6-a3a0-a6d8f1878933", + "name": "Event for Bangladeshi Organization of Networking, Diversity, Heritage, Unity and Support", + "preview": "This club is holding an event.", + "description": "Join us for our upcoming Cultural Celebration event where we will immerse ourselves in the vibrant traditions of Bangladesh by honoring significant events such as Pohela Boishakh, Ekushe February, and Shadhinota Dibosh. Experience the rich cultural heritage, delicious cuisine, and warm camaraderie as we come together to celebrate these important milestones in a welcoming and inclusive environment. Whether you are a Bangladeshi student, a member of the diaspora, or simply curious about our culture, this event is a fantastic opportunity to connect, learn, and share in the joy of our shared heritage.", + "event_type": "hybrid", + "start_time": "2026-12-14 22:15:00", + "end_time": "2026-12-15 02:15:00", + "tags": [ + "CulturalCelebrations", + "FoodBasedEvents", + "Collaborations", + "AsianAmerican", + "CommunityOutreach" + ] + }, + { + "id": "4870910d-7675-4dc8-a5c1-b79f95b36606", + "club_id": "0a053cdf-f824-4854-9fa8-a326fa36f779", + "name": "Event for Binky Patrol", + "preview": "This club is holding an event.", + "description": "Join Binky Patrol for our monthly Blanket Making Party! This is a fun and heartwarming event where club members come together to create cozy blankets for children in need. Whether you're a seasoned crafter or a complete beginner, everyone is welcome to join in the crafting fun. We'll provide all the materials needed, along with guidance from experienced members to help you get started. Come meet new friends, share stories, and make a difference in a child's life by creating something special with your own hands. Refreshments will be served, so all you need to bring is your creativity and enthusiasm! Don't miss this opportunity to spread warmth and love - RSVP on our Slack channel to secure your spot!", + "event_type": "in_person", + "start_time": "2024-06-05 19:30:00", + "end_time": "2024-06-05 23:30:00", + "tags": [ + "HumanRights", + "Volunteerism", + "VisualArts" + ] + }, + { + "id": "14a8399b-a13a-47a5-a35e-a82c4fd6d0a4", + "club_id": "0df7841d-2269-461f-833f-d6f8b7e98fdf", + "name": "Event for Biokind Analytics Northeastern", + "preview": "This club is holding an event.", + "description": "Join Biokind Analytics Northeastern for an engaging Data for Good Workshop, where students will have the opportunity to collaborate with local healthcare nonprofits in the Boston region to make a real impact in our community. Learn how to leverage your data analysis skills for social good and connect with like-minded peers who are passionate about using data for positive change. Whether you're a beginner or experienced in data analysis, this event is the perfect chance to learn, grow, and contribute to meaningful projects that benefit our local healthcare sector.", + "event_type": "in_person", + "start_time": "2024-03-20 19:15:00", + "end_time": "2024-03-20 23:15:00", + "tags": [ + "Volunteerism", + "CommunityOutreach", + "DataScience" + ] + }, + { + "id": "044ecd2d-8c74-4ba5-add8-13ad449fe237", + "club_id": "0df7841d-2269-461f-833f-d6f8b7e98fdf", + "name": "Event for Biokind Analytics Northeastern", + "preview": "This club is holding an event.", + "description": "Join us for our upcoming Data for Good Workshop where we will collaborate with local healthcare non-profits to analyze real-world data and make a positive impact in the Boston community. This hands-on event is a great opportunity for Northeastern students to apply their data analysis skills in a meaningful way while building relationships with industry professionals. Whether you're a seasoned data analyst or just starting out, this workshop welcomes all skill levels and backgrounds. Come be a part of our mission to use data for a better tomorrow!", + "event_type": "virtual", + "start_time": "2026-06-22 20:15:00", + "end_time": "2026-06-23 00:15:00", + "tags": [ + "Healthcare", + "CommunityOutreach", + "DataScience" + ] + }, + { + "id": "cec57467-8016-4e3a-91db-7d7371530a73", + "club_id": "0df7841d-2269-461f-833f-d6f8b7e98fdf", + "name": "Event for Biokind Analytics Northeastern", + "preview": "This club is holding an event.", + "description": "Join us at our upcoming 'Data for Health' community event where we will be showcasing the impactful work of Biokind Analytics Northeastern members as they collaborate with local healthcare non-profits in the Boston region. Learn how data analysis can make a real difference in the community while networking with like-minded individuals passionate about using their skills for social good. Whether you're new to data analysis or an experienced pro, this event welcomes all levels of expertise and provides a welcoming environment to connect, learn, and inspire change together!", + "event_type": "in_person", + "start_time": "2026-06-12 23:00:00", + "end_time": "2026-06-13 02:00:00", + "tags": [ + "CommunityOutreach", + "Volunteerism" + ] + }, + { + "id": "247f299a-977f-4a58-a23e-f45cc6010bc0", + "club_id": "0a7c612f-352a-47cd-b07d-c4a8cbe65ff9", + "name": "Event for Black Graduate Student Association ", + "preview": "This club is holding an event.", + "description": "Join the Black Graduate Student Association for an enlightening panel discussion on the intersection of race and academia. This thought-provoking event will feature distinguished speakers sharing their experiences and insights, followed by an engaging Q&A session to encourage dialogue and exchange of ideas. Whether you are a seasoned academic or just beginning your graduate studies, this event offers a valuable opportunity to broaden your perspective, connect with like-minded individuals, and contribute to a more inclusive and diverse academic community. Don't miss this chance to be inspired and empowered by joining us at this impactful event!", + "event_type": "hybrid", + "start_time": "2026-06-04 17:15:00", + "end_time": "2026-06-04 18:15:00", + "tags": [ + "CommunityOutreach", + "ProfessionalDevelopment" + ] + }, + { + "id": "63a6b477-4533-4e88-8419-0748d2f383b9", + "club_id": "0a7c612f-352a-47cd-b07d-c4a8cbe65ff9", + "name": "Event for Black Graduate Student Association ", + "preview": "This club is holding an event.", + "description": "Join the Black Graduate Student Association for an exciting evening of networking and professional development at our upcoming event, 'Career Symposium: Navigating post-graduate life'. Gain valuable insights and advice from successful alumni and industry professionals as they share their journeys and provide tips for navigating the job market. Engage in interactive workshops to hone your skills and build your confidence for the next steps in your career. Connect with like-minded peers in a supportive and inclusive environment where you can learn, grow, and make meaningful connections. Don't miss out on this opportunity to expand your network, gain knowledge, and take the next step towards achieving your academic and professional goals!", + "event_type": "virtual", + "start_time": "2026-01-16 13:00:00", + "end_time": "2026-01-16 17:00:00", + "tags": [ + "CommunityOutreach", + "Networking", + "AfricanAmerican" + ] + }, + { + "id": "465199c0-3923-4d1e-a70c-8f94a0a9e199", + "club_id": "0a7c612f-352a-47cd-b07d-c4a8cbe65ff9", + "name": "Event for Black Graduate Student Association ", + "preview": "This club is holding an event.", + "description": "Join us for our upcoming event, 'Empowerment Through Networking'! This interactive session will provide a unique opportunity for graduate students to connect with industry professionals, share experiences, and gain valuable insights into navigating the professional landscape. Through engaging discussions, networking activities, and a supportive atmosphere, attendees will not only expand their professional network but also enhance their skills and confidence in pursuing their career goals. Don't miss out on this fantastic chance to grow, learn, and connect with like-minded individuals in a welcoming and inclusive environment!", + "event_type": "hybrid", + "start_time": "2025-05-04 14:30:00", + "end_time": "2025-05-04 16:30:00", + "tags": [ + "AfricanAmerican", + "CommunityOutreach", + "Networking" + ] + }, + { + "id": "6fe4466a-5562-49ec-b91b-b7a719715e0f", + "club_id": "5e746d5d-cbe8-4caa-ba6e-93875a6ab23e", + "name": "Event for Black Pre-Law Association", + "preview": "This club is holding an event.", + "description": "Join the Black Pre-Law Association for an engaging panel discussion on the intersection of race and law in today's society. Our guest speakers, prominent legal experts and social activists, will share their insights and experiences, offering valuable perspectives on pursuing a career in the legal field as a Black undergraduate student. This event is a fantastic opportunity to deepen your understanding of social justice issues, connect with like-minded peers, and discover pathways to academic and professional success. Be a part of this empowering and supportive community where your voice matters!", + "event_type": "hybrid", + "start_time": "2025-05-10 12:00:00", + "end_time": "2025-05-10 14:00:00", + "tags": [ + "AfricanAmerican", + "Prelaw", + "CommunityOutreach" + ] + }, + { + "id": "878a00c1-0152-49b6-98ea-577403f6f5fa", + "club_id": "94aff56b-fa20-46e0-8b28-0e6bbb9e2006", + "name": "Event for Brazilian Jiu Jitsu at Northeastern University", + "preview": "This club is holding an event.", + "description": "Come join us at Northeastern University's Brazilian Jiu Jitsu club for a fun and informative self-defense seminar this Saturday afternoon. Whether you're a seasoned practitioner or brand new to the art, our skilled instructors will guide you through practical techniques to enhance your skills and boost your confidence. It's a great opportunity to meet like-minded individuals, ask questions, and improve your overall well-being. Don't miss out on this chance to learn and grow with the support of our welcoming community. Be sure to follow us on Instagram @northeasternbjj for updates and join our Discord community at https://discord.gg/3RuzAtZ4WS to stay connected!", + "event_type": "hybrid", + "start_time": "2025-05-24 17:00:00", + "end_time": "2025-05-24 21:00:00", + "tags": [ + "PhysicalFitness", + "CommunityOutreach", + "BrazilianJiuJitsu" + ] + }, + { + "id": "15fe9469-fcc8-4c07-a829-d98be709bce2", + "club_id": "94aff56b-fa20-46e0-8b28-0e6bbb9e2006", + "name": "Event for Brazilian Jiu Jitsu at Northeastern University", + "preview": "This club is holding an event.", + "description": "Come join us for a fun and interactive Brazilian Jiu Jitsu workshop at Northeastern University! Whether you're a complete beginner or a seasoned practitioner, this event is perfect for anyone looking to learn new techniques, meet fellow enthusiasts, and engage in some friendly sparring sessions. Our experienced instructors will guide you through various drills and exercises to improve your skills on the mats. Don't miss out on this opportunity to elevate your Jiu Jitsu game while enjoying the camaraderie of our welcoming community. We can't wait to see you there! Make sure to join our Discord (https://discord.gg/3RuzAtZ4WS) and follow us on Instagram (@northeasternbjj) for all the latest updates and announcements!", + "event_type": "hybrid", + "start_time": "2025-03-03 16:30:00", + "end_time": "2025-03-03 19:30:00", + "tags": [ + "PhysicalFitness", + "BrazilianJiuJitsu", + "CommunityOutreach" + ] + }, + { + "id": "6adf1993-2f84-4dd0-a4a9-ab8eace31021", + "club_id": "024650bb-873a-4ca9-bd4d-d812cf855878", + "name": "Event for Business of Entertainment ", + "preview": "This club is holding an event.", + "description": "Join us for an exciting evening of networking and learning in our 'Mastering Music Business' event! Explore the realm of music industry with industry professionals discussing key strategies for success and growth. Engage in interactive workshops on music marketing, artist management, and digital distribution, and connect with fellow music enthusiasts to share insights and build valuable connections. Whether you're an aspiring musician, music producer, or music business enthusiast, this event is your opportunity to gain valuable knowledge and expand your network within the vibrant world of music business!", + "event_type": "virtual", + "start_time": "2025-09-27 21:00:00", + "end_time": "2025-09-27 23:00:00", + "tags": [ + "Film", + "Entertainment" + ] + }, + { + "id": "008aa071-0b30-4c9d-8cbc-8f8d5b21b1b9", + "club_id": "024650bb-873a-4ca9-bd4d-d812cf855878", + "name": "Event for Business of Entertainment ", + "preview": "This club is holding an event.", + "description": "Join us for an exciting event hosted by the Business of Entertainment club! Immerse yourself in a world of possibilities as we dive into the dynamic intersection between entertainment and business. Our special guest speaker will share invaluable insights, our interactive workshop will spark creativity, and our insightful panel discussion will uncover new opportunities in this thrilling field. Connect with fellow enthusiasts, learn from industry experts, and be inspired to pursue your passions. Don't miss out on this chance to expand your knowledge and network with like-minded individuals in the vibrant world of entertainment business!", + "event_type": "hybrid", + "start_time": "2026-12-28 21:30:00", + "end_time": "2026-12-29 00:30:00", + "tags": [ + "Music", + "Film" + ] + }, + { + "id": "c8698aab-e15d-4808-8fcb-a60b85a0b007", + "club_id": "024650bb-873a-4ca9-bd4d-d812cf855878", + "name": "Event for Business of Entertainment ", + "preview": "This club is holding an event.", + "description": "Join us for an exciting event where we will be diving deep into the world of music licensing in the entertainment industry! Our guest speakers, who are experts in the field, will share valuable insights on the intricacies of licensing music for films, TV shows, and other media platforms. You'll have the opportunity to learn about the legal aspects, negotiation strategies, and trends shaping this essential aspect of the business. Whether you're a budding musician, aspiring filmmaker, or simply curious about the behind-the-scenes of your favorite shows, this event is perfect for expanding your knowledge and connecting with fellow enthusiasts!", + "event_type": "virtual", + "start_time": "2026-10-18 23:15:00", + "end_time": "2026-10-19 01:15:00", + "tags": [ + "Entertainment", + "VisualArts" + ] + }, + { + "id": "3255451b-7bc3-405f-aaca-5454fa40d229", + "club_id": "0b605bba-8526-40b7-be72-b858495c2ae1", + "name": "Event for Color Guard", + "preview": "This club is holding an event.", + "description": "Join Color Guard for an exciting workshop where you can learn choreographed routines with Rifles, Sabres, and Flags! This fun-filled event is perfect for beginners looking to discover the world of Color Guard or for experienced spinners seeking to polish their skills. Our friendly instructors will guide you through the basics and help you unleash your creativity in a themed show. Come explore the art of Color Guard and be part of our vibrant community dedicated to showcasing talent and passion through mesmerizing performances!", + "event_type": "in_person", + "start_time": "2026-01-06 16:15:00", + "end_time": "2026-01-06 17:15:00", + "tags": [ + "CreativeWriting", + "PerformingArts", + "Music" + ] + }, + { + "id": "9b18ba26-2419-4102-a132-bf0d13bb91bb", + "club_id": "5d6ffac7-238a-4569-95a6-1e3eec623555", + "name": "Event for Community Palette", + "preview": "This club is holding an event.", + "description": "Join us at Community Palette for a day of creativity and connection as we host a 'Art Escape Workshop'. This event is open to all, where participants will engage in therapeutic art activities aimed at promoting mental well-being and self-expression. Experienced instructors will guide you through various artistic projects, encouraging you to explore your inner artist in a supportive and welcoming environment. Whether you're a seasoned artist or just looking to let loose and enjoy a day of art therapy, this workshop is the perfect opportunity to unwind and connect with others through the power of art. Come join us in building a community that values creativity and self-care!", + "event_type": "in_person", + "start_time": "2026-10-16 13:30:00", + "end_time": "2026-10-16 17:30:00", + "tags": [ + "CommunityOutreach", + "VisualArts", + "CreativeWriting", + "Psychology" + ] + }, + { + "id": "b1f6cfda-1476-4072-8be9-69fcda210d2c", + "club_id": "5d6ffac7-238a-4569-95a6-1e3eec623555", + "name": "Event for Community Palette", + "preview": "This club is holding an event.", + "description": "Join us at Community Palette for a Paint Night event where we'll be creating masterpiece mini-canvases inspired by community stories and personal journeys. This inclusive and interactive session is open to everyone, regardless of artistic background or experience. We'll provide all the materials needed, along with guidance from our talented team of local artists. Come unwind, have fun, and connect with fellow art enthusiasts in a relaxing and supportive environment. Let your creativity flow and leave with a unique artwork that reflects your inner thoughts and emotions. Treat yourself to an evening of self-expression and community bonding. See you there!", + "event_type": "hybrid", + "start_time": "2026-11-23 22:15:00", + "end_time": "2026-11-24 02:15:00", + "tags": [ + "CreativeWriting", + "CommunityOutreach" + ] + }, + { + "id": "ce24a39b-0ab2-4a90-a560-60da8a2c985d", + "club_id": "5d6ffac7-238a-4569-95a6-1e3eec623555", + "name": "Event for Community Palette", + "preview": "This club is holding an event.", + "description": "Join us at Community Palette's Art Night! We are hosting a fun and interactive event where you can unleash your creativity through various art projects and activities. Whether you're a beginner or a pro, everyone is welcome to come and enjoy a night filled with colors, laughter, and good company. Our supportive community is here to help you de-stress, express yourself, and make new friends. Come be a part of our inclusive and uplifting environment, where art becomes a powerful tool for improving mental well-being and building connections. See you there!", + "event_type": "hybrid", + "start_time": "2024-06-10 18:15:00", + "end_time": "2024-06-10 22:15:00", + "tags": [ + "Psychology", + "CommunityOutreach", + "VisualArts", + "CreativeWriting" + ] + }, + { + "id": "9cfedd6c-3328-4115-82ef-bd032cee27ed", + "club_id": "c3cd328c-4c13-4d7c-9741-971b3633baa5", + "name": "Event for ConnectED Research ", + "preview": "This club is holding an event.", + "description": "Join ConnectED Research for our upcoming Meet the Professors Mixer! This event is a fantastic opportunity for students to engage with their academic mentors in a casual and friendly setting. Get ready to connect with inspiring professors eager to share their knowledge and tips for success in academia. Whether you're looking for guidance on research projects or seeking to explore new academic opportunities, this mixer is the perfect space to gain valuable insights and forge meaningful connections. Let's come together to cultivate a supportive and collaborative community where everyone can thrive academically!", + "event_type": "in_person", + "start_time": "2026-05-17 15:30:00", + "end_time": "2026-05-17 18:30:00", + "tags": [ + "CommunitySupport", + "AcademicNetworking", + "EducationEquality", + "Diversity", + "Collaboration" + ] + }, + { + "id": "750cf059-11dd-4b61-b855-c90f43cad085", + "club_id": "c3cd328c-4c13-4d7c-9741-971b3633baa5", + "name": "Event for ConnectED Research ", + "preview": "This club is holding an event.", + "description": "Join ConnectED Research for our upcoming event, College Success Summit! This interactive and inspiring gathering will bring together students, professors, and education advocates to share insights and strategies for excelling in academia. With engaging discussions, mentorship opportunities, and practical workshops, participants will gain valuable tools to navigate their academic journeys with confidence. Come connect with a supportive community dedicated to empowering students from all backgrounds to thrive in higher education!", + "event_type": "virtual", + "start_time": "2025-07-15 23:30:00", + "end_time": "2025-07-16 02:30:00", + "tags": [ + "CommunitySupport", + "Collaboration", + "Diversity", + "EducationEquality", + "Empowerment", + "AcademicNetworking" + ] + }, + { + "id": "4fbdc3e6-84eb-4195-81f0-271531d3802a", + "club_id": "f3eb7ae8-dc8f-445b-b0c7-854a96814799", + "name": "Event for Crystal Clear", + "preview": "This club is holding an event.", + "description": "Join Crystal Clear for an enchanting evening under the stars as we delve into the mystical world of crystal healing and tarot reading. Our knowledgeable facilitators will guide you through the fascinating history and modern practices of these ancient arts, providing insights on how to incorporate them into your daily life. Whether you are a seasoned practitioner or a curious newcomer, this event offers a warm and welcoming space to connect with like-minded individuals, exchange experiences, and deepen your understanding of Pagan spirituality. Come nurture your spirit with us and embark on a journey of self-discovery and enlightenment!", + "event_type": "hybrid", + "start_time": "2024-02-14 16:15:00", + "end_time": "2024-02-14 18:15:00", + "tags": [ + "CommunityBuilding", + "Astrology", + "CulturalAwareness" + ] + }, + { + "id": "6c2cb640-5d0f-40a8-bf90-bad3250a8dc9", + "club_id": "f3eb7ae8-dc8f-445b-b0c7-854a96814799", + "name": "Event for Crystal Clear", + "preview": "This club is holding an event.", + "description": "Join us at Crystal Clear's upcoming event 'Exploring the Magick of Crystals and Tarot' where we dive deep into the mystical world of crystals and tarot cards. Learn about the powerful energies of different crystals and how to incorporate them into your daily spiritual practice. Get hands-on experience with tarot readings and decipher the messages hidden within the cards. Whether you're a seasoned practitioner or a curious beginner, this event is a welcoming space for all to learn, share, and grow together in the realm of (Neo)Paganism and Spirituality. We guarantee a night filled with new discoveries, enlightening discussions, and connections with like-minded individuals. See you there!", + "event_type": "in_person", + "start_time": "2025-02-02 12:30:00", + "end_time": "2025-02-02 15:30:00", + "tags": [ + "CulturalAwareness" + ] + }, + { + "id": "dac92b11-4e17-4e88-8089-ec3f94099e9e", + "club_id": "939653b8-8082-483a-9b24-8d4876061ae7", + "name": "Event for Dermatology Interest Society", + "preview": "This club is holding an event.", + "description": "Join DermIS for an enlightening session on deciphering the secrets of effective skincare routines. Our event will feature a hands-on exploration of trending skincare products, useful tips from seasoned dermatologists, and an open dialogue on common skin issues faced by many. Come meet like-minded individuals passionate about skincare, and discover how to achieve radiant, healthy skin while gaining valuable insights for your future dermatological pursuits!", + "event_type": "virtual", + "start_time": "2025-08-05 15:30:00", + "end_time": "2025-08-05 16:30:00", + "tags": [ + "Health", + "Beauty", + "CareerDevelopment", + "Community" + ] + }, + { + "id": "1db90014-9ac8-4f89-8ff5-88989fcae476", + "club_id": "939653b8-8082-483a-9b24-8d4876061ae7", + "name": "Event for Dermatology Interest Society", + "preview": "This club is holding an event.", + "description": "Join DermIS at our upcoming event 'Skincare 101' where we'll be delving into the fundamentals of a good skincare routine. Discover the secrets to healthy, glowing skin as we discuss the science behind popular skincare ingredients and debunk common myths. Our guest speaker, a renowned dermatologist, will provide expert advice on tailoring a routine that suits your skin type. This interactive session will leave you feeling confident and empowered to take charge of your skin's health. Don't miss this opportunity to enhance your skincare knowledge and connect with like-minded individuals in a supportive and engaging environment!", + "event_type": "in_person", + "start_time": "2024-03-14 20:00:00", + "end_time": "2024-03-14 23:00:00", + "tags": [ + "Skincare" + ] + }, + { + "id": "9a95b67a-388f-429b-8927-e4cfaa1388b2", + "club_id": "939653b8-8082-483a-9b24-8d4876061ae7", + "name": "Event for Dermatology Interest Society", + "preview": "This club is holding an event.", + "description": "Join the Dermatology Interest Society at our upcoming event as we delve into the science behind popular skincare trends! In this interactive session, skincare enthusiasts and aspiring dermatologists alike will have the opportunity to learn about the latest industry innovations, debunk skincare myths, and receive personalized tips for achieving radiant and healthy skin. Our guest speaker, a renowned dermatologist, will share expert insights and answer all your burning skincare questions. Whether you're a novice or a skincare aficionado, this informative event promises to be a fun and enlightening experience for all attendees. Come discover the secrets to glowing skin and uncover the power of a well-crafted skincare routine with us!", + "event_type": "hybrid", + "start_time": "2025-02-20 23:15:00", + "end_time": "2025-02-21 03:15:00", + "tags": [ + "Community" + ] + }, + { + "id": "950a113d-a38d-48cd-886a-59e8291f8007", + "club_id": "7f0b87df-c5dd-4772-bd29-51083f9cad1a", + "name": "Event for Dominican Student Association ", + "preview": "This club is holding an event.", + "description": "Join the Dominican Student Association for a lively celebration of Merengue Night! Experience the vibrant rhythms and joyful moves of traditional Dominican dance while mingling with fellow members and newcomers alike. Whether you're a seasoned dancer or just curious to learn, this event promises an evening of laughter, music, and cultural exchange. Don't miss out on the chance to immerse yourself in the spirit of the Dominican Republic, where every step tells a story and every beat unites us in joy!", + "event_type": "virtual", + "start_time": "2024-02-07 23:30:00", + "end_time": "2024-02-08 01:30:00", + "tags": [ + "CommunityOutreach", + "LatinAmerica" + ] + }, + { + "id": "26789899-1d79-4f60-a149-6eef6ac6ad10", + "club_id": "201a41ce-3982-4d12-8c5e-822a260bec22", + "name": "Event for Emerging Markets Club ", + "preview": "This club is holding an event.", + "description": "Join us for an engaging speaker event hosted by the Emerging Markets Club as we delve deep into the dynamics of emerging markets! Our special guest speakers, industry experts, will share valuable insights and real-world experiences, providing you with a unique perspective on this dynamic and evolving economic landscape. This event is the perfect opportunity to connect with like-minded individuals, expand your knowledge, and explore exciting career possibilities in the ever-growing world of emerging markets. Don't miss out on this enriching experience!", + "event_type": "in_person", + "start_time": "2025-02-19 13:30:00", + "end_time": "2025-02-19 16:30:00", + "tags": [ + "Research" + ] + }, + { + "id": "a7fdf545-4ed4-41fb-b59b-887e5c9c20bc", + "club_id": "201a41ce-3982-4d12-8c5e-822a260bec22", + "name": "Event for Emerging Markets Club ", + "preview": "This club is holding an event.", + "description": "Join the Emerging Markets Club for an exclusive evening filled with insights and connections! Our upcoming speaker event will feature industry experts sharing their knowledge and experiences in navigating the world of emerging markets. It's a great opportunity for students to learn and network in a welcoming and engaging environment. Don't miss out on expanding your understanding of these dynamic markets and connecting with like-minded peers and professionals!", + "event_type": "hybrid", + "start_time": "2024-08-07 15:30:00", + "end_time": "2024-08-07 18:30:00", + "tags": [ + "Economics", + "InternationalRelations", + "Networking" + ] + }, + { + "id": "6c1cd473-6507-43dd-bc84-500d386445aa", + "club_id": "b6de04c0-93a5-4717-8e4d-5c2844930dfe", + "name": "Event for First Generation Investors Club of Northeastern University", + "preview": "This club is holding an event.", + "description": "Join us at our upcoming 'Future Investors Expo' event where high school participants from the First Generation Investors Club of Northeastern University will showcase their newly acquired financial literacy and investing skills. You'll have the chance to see firsthand the sophisticated analytical skills these students have developed over their eight-week program, as they present their capstone projects breaking down their investment rationale and asset allocation of a $100 investment account. This event is a great opportunity to witness the impact of our program and the potential it holds for shaping these young minds as they start their journey in the world of investing.", + "event_type": "in_person", + "start_time": "2025-06-01 17:15:00", + "end_time": "2025-06-01 18:15:00", + "tags": [ + "Education", + "CommunityService", + "FinancialLiteracy", + "Investing", + "YouthEmpowerment" + ] + }, + { + "id": "3afec3c2-f26c-4663-a614-99cce22d9177", + "club_id": "a850f2ab-a072-4396-853a-e21d0f3f7d7e", + "name": "Event for Ghanaian Student Organization", + "preview": "This club is holding an event.", + "description": "Join the Ghanaian Student Organization for an exciting cultural showcase event showcasing the vibrant traditions of Ghana! Immerse yourself in an evening filled with exhilarating music, traditional dances, delicious Ghanaian cuisine, and engaging speakers sharing the beauty of Ghanaian culture. Whether you have Ghanaian roots or simply have an interest in experiencing something new, this event welcomes everyone to come together in a celebration of diversity and connection. Get ready to be captivated by the sights, sounds, and flavors of Ghana as we come together to embrace the spirit of community and cultural appreciation.", + "event_type": "in_person", + "start_time": "2024-05-11 17:00:00", + "end_time": "2024-05-11 19:00:00", + "tags": [ + "Volunteerism" + ] + }, + { + "id": "b8332c68-c2f7-444c-ac9c-d25494ca393f", + "club_id": "a850f2ab-a072-4396-853a-e21d0f3f7d7e", + "name": "Event for Ghanaian Student Organization", + "preview": "This club is holding an event.", + "description": "Join the Ghanaian Student Organization for an evening of cultural immersion at our upcoming event, 'Taste of Ghana'. Experience the vibrant flavors and traditions of Ghana as we showcase delicious authentic dishes, engaging music and dance performances, and insightful presentations on the history and customs of this diverse African nation. Whether you're a Ghanaian student eager to connect with your roots or a curious attendee looking to expand your cultural horizons, all are welcome to come together in a spirit of unity and celebration. Don't miss this opportunity to set your taste buds tingling and your heart singing as we come together to cherish the beauty of Ghanaian culture!", + "event_type": "in_person", + "start_time": "2026-01-24 16:15:00", + "end_time": "2026-01-24 17:15:00", + "tags": [ + "AfricanAmerican", + "Dance", + "CommunityOutreach", + "Volunteerism" + ] + }, + { + "id": "8b69addc-a991-4844-8dfb-779bd155bbea", + "club_id": "7d2aa5b1-9340-49aa-8e30-d38e67f1e146", + "name": "Event for Google Developer Students Club - Northeastern", + "preview": "This club is holding an event.", + "description": "Join the Google Developer Students Club - Northeastern for an exciting workshop on the fundamentals of app development! In this interactive session, you'll have the opportunity to learn about building user-friendly interfaces, integrating APIs, and deploying your own creative projects. Whether you're a seasoned coder or a curious beginner, this event is designed to provide valuable insights and hands-on experience in the world of technology. Don't miss out on this chance to expand your skills and connect with fellow tech enthusiasts in a supportive and inspiring environment!", + "event_type": "virtual", + "start_time": "2025-04-21 21:15:00", + "end_time": "2025-04-21 22:15:00", + "tags": [ + "Innovation", + "Google", + "SoftwareEngineering", + "CommunityOutreach" + ] + }, + { + "id": "568a93b2-4836-4c98-86be-b853736b0728", + "club_id": "41df2a93-836b-4127-9ead-2c6c8a8a12ee", + "name": "Event for Graduate Biotechnology and Bioinformatics Association", + "preview": "This club is holding an event.", + "description": "Join us for an engaging and insightful panel discussion on the latest advancements in biotechnology and bioinformatics! Our event will feature expert guest speakers sharing real-world case studies and career development advice. You'll have the opportunity to network with like-minded students and professionals in a friendly and welcoming environment. Don't miss out on this chance to expand your knowledge and skills in the exciting field of biotech and bioinfo!", + "event_type": "in_person", + "start_time": "2024-06-18 18:30:00", + "end_time": "2024-06-18 22:30:00", + "tags": [ + "CommunityOutreach", + "DataScience", + "CareerDevelopment", + "Biology" + ] + }, + { + "id": "aec125e3-7f04-450a-a980-dde0fa27e797", + "club_id": "41df2a93-836b-4127-9ead-2c6c8a8a12ee", + "name": "Event for Graduate Biotechnology and Bioinformatics Association", + "preview": "This club is holding an event.", + "description": "Join the Graduate Biotechnology and Bioinformatics Association for an exciting evening of engaging discussions and valuable insights! Our upcoming event will feature thought-provoking case studies, interactive sessions focusing on career development, and ample networking opportunities. Whether you're a seasoned student or just starting out in the field, this event promises to enhance your knowledge and add a valuable dimension to your academic journey. Come be a part of our vibrant community, where learning meets fun!", + "event_type": "in_person", + "start_time": "2026-10-19 22:30:00", + "end_time": "2026-10-20 01:30:00", + "tags": [ + "CareerDevelopment", + "Biology" + ] + }, + { + "id": "c6a10a8b-dfec-48e0-946c-0d07207a393e", + "club_id": "66ebabfd-d7bd-4c4c-8646-68ca1a3a3f1a", + "name": "Event for Graduate Female Leaders Club", + "preview": "This club is holding an event.", + "description": "Join us for our upcoming event on 'Negotiating Your Worth' where we will have an interactive workshop led by experienced professionals on strategies to effectively negotiate salaries and benefits. This event aims to empower our community of current students and alumni with the knowledge and skills needed to navigate the workforce confidently and advocate for themselves in their career journeys. Come network with like-minded individuals, gain valuable insights, and grow together as aspiring graduate female leaders!", + "event_type": "in_person", + "start_time": "2025-09-14 17:30:00", + "end_time": "2025-09-14 18:30:00", + "tags": [ + "BusinessNetworking", + "ProfessionalDevelopment", + "WomenLeadership", + "CommunityBuilding" + ] + }, + { + "id": "f9147496-ef4c-402b-a78d-e5acbbc3ea82", + "club_id": "66ebabfd-d7bd-4c4c-8646-68ca1a3a3f1a", + "name": "Event for Graduate Female Leaders Club", + "preview": "This club is holding an event.", + "description": "Join the Graduate Female Leaders Club for an engaging evening of empowerment and networking at our upcoming event! Connect with fellow students and alumni as we dive into insightful discussions led by accomplished business leaders. Gain valuable insights into navigating graduate-level studies and forging paths towards your professional goals post-graduation. This event promises to be a blend of inspiration, learning, and building connections that will propel you towards success in the world of tomorrow.", + "event_type": "virtual", + "start_time": "2024-03-19 17:30:00", + "end_time": "2024-03-19 20:30:00", + "tags": [ + "ProfessionalDevelopment", + "WomenLeadership", + "BusinessNetworking" + ] + }, + { + "id": "8a96b163-de39-4459-9a2f-ba0715f7f317", + "club_id": "db402fd8-d44a-4a94-b013-2ad1f09e7921", + "name": "Event for Half Asian People's Association", + "preview": "This club is holding an event.", + "description": "Come join the Half Asian People's Association for our upcoming 'Mixed-Race Stories Night' event! This special evening will feature a diverse lineup of speakers sharing their personal experiences and perspectives on navigating the world as individuals of mixed-race and Asian heritage. Whether you're a Hapa yourself or simply curious to learn more about the unique intersections of culture and identity, this event promises to be insightful, engaging, and welcoming to all. Let's come together to listen, learn, and celebrate the beauty of diversity within our community. Don't miss this chance to connect with like-minded individuals and expand your understanding of what it means to be proudly 'half Asian'.", + "event_type": "hybrid", + "start_time": "2024-06-05 20:00:00", + "end_time": "2024-06-05 23:00:00", + "tags": [ + "CreativeWriting", + "AsianAmerican", + "CommunityOutreach", + "LGBTQ" + ] + }, + { + "id": "6444aa52-215a-4515-a797-55ee7e69bca4", + "club_id": "e78bce96-c0a4-4e2d-ace7-a0ae23a7934d", + "name": "Event for Health Informatics Graduate Society of Northeastern University", + "preview": "This club is holding an event.", + "description": "Join us for an interactive workshop on the latest trends in health informatics! Our event will feature hands-on activities, expert guest speakers, and networking opportunities for students interested in the intersection of healthcare and technology. Whether you're a seasoned professional or just starting out in the field, this workshop is designed to inspire and educate, providing valuable insights and practical skills to help you succeed in the ever-evolving world of health informatics.", + "event_type": "in_person", + "start_time": "2026-04-26 22:00:00", + "end_time": "2026-04-27 01:00:00", + "tags": [ + "NetworkingEvents", + "CommunityOutreach" + ] + }, + { + "id": "ad35434a-3757-46c1-9424-0ca60fabfb11", + "club_id": "36ada6fb-f133-4ea3-80a6-db9527fd9bd1", + "name": "Event for Hear Your Song Northeastern", + "preview": "This club is holding an event.", + "description": "Join Hear Your Song Northeastern for a heartwarming and fun-filled songwriting workshop where kids and teens with chronic medical conditions can come together to unleash their creativity! Our experienced team will guide participants through the music production process, from lyrics to melodies, in a supportive and inclusive environment. Get ready to make new friends, express yourself through music, and create something truly special that you can be proud of. Don't miss this opportunity to discover the healing power of music and the joy of collaborative artistry!", + "event_type": "in_person", + "start_time": "2025-10-28 17:00:00", + "end_time": "2025-10-28 18:00:00", + "tags": [ + "Music", + "Volunteerism", + "CreativeWriting", + "Psychology", + "PerformingArts" + ] + }, + { + "id": "2f92d69a-c4d4-49f8-9f9e-7c6297b96bab", + "club_id": "a5f26966-78cc-46e3-a29b-7bd30fbb4394", + "name": "Event for Hospitality Business Club", + "preview": "This club is holding an event.", + "description": "Join the Hospitality Business Club for an exciting panel discussion on 'Innovations in Hotel Design'. Discover how cutting-edge architecture and interior design concepts are shaping the future of hospitality experiences. Engage with industry experts as they share insights on trends, sustainability practices, and the guest-centric approach driving the evolution of hotel spaces. Whether you're a design enthusiast, a hospitality professional, or simply curious about the intersection of art and business, this event promises to inspire and spark creative ideas. Don't miss this opportunity to network with like-minded individuals and gain a deeper understanding of the dynamic world where design meets hospitality!", + "event_type": "in_person", + "start_time": "2026-03-10 17:00:00", + "end_time": "2026-03-10 18:00:00", + "tags": [ + "Networking", + "Business" + ] + }, + { + "id": "6ecf3151-ec33-40d4-aa9d-8405d9c1265d", + "club_id": "a5f26966-78cc-46e3-a29b-7bd30fbb4394", + "name": "Event for Hospitality Business Club", + "preview": "This club is holding an event.", + "description": "Join us for an insightful panel discussion on 'Innovations in Hotel Design' where industry experts will share cutting-edge trends and strategies shaping the future of hospitality spaces. Explore the fusion of aesthetics, functionality, and sustainability, and gain valuable perspectives on how design influences guest experience and business success. Whether you're a design enthusiast, a hotelier, an architect, or simply curious about the art of creating memorable spaces, this event is open to all who are eager to dive into the creative world of hospitality design.", + "event_type": "hybrid", + "start_time": "2025-10-04 23:00:00", + "end_time": "2025-10-05 02:00:00", + "tags": [ + "Networking", + "Business", + "Engagement", + "Community" + ] + }, + { + "id": "3c6706b5-8d87-44ef-91f7-f43702995ed2", + "club_id": "0621e78e-5254-4dcd-a99e-2529f4d9d882", + "name": "Event for Huntington Strategy Group", + "preview": "This club is holding an event.", + "description": "Join us at our annual Strategy Showdown event hosted by Huntington Strategy Group! This exciting evening will bring together nonprofit leaders, social entrepreneurs, and students passionate about making a difference in the world. Get ready for an engaging panel discussion with industry experts, interactive workshops to hone your strategic skills, and networking opportunities to connect with like-minded changemakers. Whether you're a seasoned professional or just starting your journey in social impact, this event is the perfect opportunity to learn, collaborate, and be inspired to drive positive change in our community. Come join us and be a part of the impact-driven movement!", + "event_type": "hybrid", + "start_time": "2025-09-08 21:30:00", + "end_time": "2025-09-09 00:30:00", + "tags": [ + "HumanRights" + ] + }, + { + "id": "66ec6b24-20f0-45ac-ac7b-6e911a8b9ebc", + "club_id": "a3b78a49-c5d0-4644-bbf9-2b830e37366d", + "name": "Event for Husky Hemophilia Group", + "preview": "This club is holding an event.", + "description": "Join the Husky Hemophilia Group for an engaging educational session where we dive into the world of bleeding disorders, shedding light on the challenges and triumphs faced by individuals and families in our community. This event will feature guest speakers sharing personal stories, interactive activities to illustrate the impact of these disorders, and resources to help spread awareness and support those affected. Whether you're new to the topic or have personal experience, everyone is welcome to learn, connect, and make a difference together. Let's stand united in advocating for accessible healthcare and nurturing a more understanding Northeastern and Massachusetts community. Come join us and be a part of our supportive and compassionate network!", + "event_type": "virtual", + "start_time": "2024-12-06 21:30:00", + "end_time": "2024-12-07 01:30:00", + "tags": [ + "HealthcareAdvocacy", + "Education", + "Support", + "Volunteerism" + ] + }, + { + "id": "4d7ab624-f02e-4881-b774-efd6aca33b93", + "club_id": "a3b78a49-c5d0-4644-bbf9-2b830e37366d", + "name": "Event for Husky Hemophilia Group", + "preview": "This club is holding an event.", + "description": "Join the Husky Hemophilia Group for an enlightening evening dedicated to raising awareness for bleeding disorders within the Northeastern and Massachusetts community! Our passionate speakers will share insights on the challenges faced by individuals with bleeding disorders and their loved ones, as well as the importance of accessible healthcare and ongoing research efforts. Come be a part of our supportive community and help us advocate for those who need our support the most. Together, we can make a difference!", + "event_type": "in_person", + "start_time": "2024-12-03 13:15:00", + "end_time": "2024-12-03 14:15:00", + "tags": [ + "Volunteerism", + "Support" + ] + }, + { + "id": "a4c2e466-33ba-42da-9a25-dd4f52b28c54", + "club_id": "c475cb86-41f3-43e9-bfb1-cc75142c894b", + "name": "Event for IAFIE Northeastern University Chapter ", + "preview": "This club is holding an event.", + "description": "Join us at the next meeting of the IAFIE Northeastern University Chapter for an exciting discussion focused on the latest trends and innovations in Intelligence and associated fields. This event is perfect for professionals looking to connect, share insights, and further their expertise in a supportive and enriching environment. Whether you are a seasoned veteran or just starting your career, our meetings provide valuable opportunities for networking, knowledge sharing, and personal growth. Come be a part of our vibrant community dedicated to advancing research, fostering partnerships, and promoting professional development in the field!", + "event_type": "virtual", + "start_time": "2024-01-18 13:15:00", + "end_time": "2024-01-18 16:15:00", + "tags": [ + "ProfessionalDevelopment", + "Intelligence" + ] + }, + { + "id": "c37a4c1d-1976-4320-8f1f-874177159b24", + "club_id": "c1d685f0-6334-428b-a860-defb5cf4f151", + "name": "Event for If/When/How: Lawyering for Reproductive Justice at NUSL ", + "preview": "This club is holding an event.", + "description": "Join If/When/How: Lawyering for Reproductive Justice at NUSL for an enlightening panel discussion on the intersectionality of reproductive rights and social justice. Our diverse panel of experts will explore how systemic discrimination affects individuals' autonomy in making reproductive choices. Engage in meaningful conversations, gain insights on legal strategies for advancing reproductive justice, and connect with like-minded individuals who share a commitment to promoting dignity and empowerment for all. Don't miss this opportunity to be part of a community that values inclusivity, advocacy, and change-making in the pursuit of reproductive justice for every person.", + "event_type": "hybrid", + "start_time": "2025-03-10 16:30:00", + "end_time": "2025-03-10 17:30:00", + "tags": [ + "Journalism", + "HumanRights", + "CommunityOutreach" + ] + }, + { + "id": "b5ab3d2a-1ad1-42b3-88a4-f85bb61b953a", + "club_id": "c15f0c80-84e4-4ba5-acae-1194d0152bfd", + "name": "Event for Illume Magazine", + "preview": "This club is holding an event.", + "description": "Join Illume Magazine for an engaging evening celebrating Asian-American and Asian/Pacific Islander experiences at Northeastern University. Dive into a blend of lifestyle and culture discussions, insightful political reviews, and captivating literary arts submissions. Connect with fellow students passionate about critical thought and exploration of diverse identities and stories. Whether you're a writer, a reader, or simply curious, this event offers a welcoming space to learn, share, and be inspired.", + "event_type": "virtual", + "start_time": "2026-01-02 16:00:00", + "end_time": "2026-01-02 18:00:00", + "tags": [ + "CreativeWriting", + "Journalism", + "AsianAmerican" + ] + }, + { + "id": "f1245a25-9a0e-4083-8b79-7073d755b795", + "club_id": "c15f0c80-84e4-4ba5-acae-1194d0152bfd", + "name": "Event for Illume Magazine", + "preview": "This club is holding an event.", + "description": "Join Illume Magazine for an enriching evening of cultural exploration during our Asian-American Film Screening Night! Immerse yourself in captivating stories that shed light on the diverse experiences and challenges faced by the Asian-American community. Connect with fellow enthusiasts and engage in thought-provoking discussions led by our passionate team of writers and filmmakers. Snacks and drinks will be provided as you relax in a welcoming atmosphere designed to inspire creativity and spark meaningful conversations. Don't miss this opportunity to broaden your perspective and celebrate the rich tapestry of Asian-American identities together with Illume Magazine!", + "event_type": "hybrid", + "start_time": "2025-02-09 14:15:00", + "end_time": "2025-02-09 16:15:00", + "tags": [ + "CreativeWriting", + "AsianAmerican" + ] + }, + { + "id": "22d070b4-3b0e-43a5-96f4-376c772659f0", + "club_id": "c15f0c80-84e4-4ba5-acae-1194d0152bfd", + "name": "Event for Illume Magazine", + "preview": "This club is holding an event.", + "description": "Join Illume Magazine at our upcoming event celebrating the vibrant diversity and rich cultural heritage of Asian-American and Asian/Pacific Islander communities! Experience an engaging discussion on pressing social issues, indulge in delicious traditional cuisine, and connect with fellow students passionate about exploring and celebrating the multifaceted identities within the diaspora. Whether you're interested in lifestyle trends, political insights, or showcasing your creative talents through literary arts, this event promises to inspire and empower you to embrace the beauty of our shared experiences. Come join us for an evening of enlightenment, connection, and celebration!", + "event_type": "hybrid", + "start_time": "2024-02-23 22:00:00", + "end_time": "2024-02-24 01:00:00", + "tags": [ + "CreativeWriting", + "Journalism" + ] + }, + { + "id": "09960f09-422f-4d64-bd66-2c2bf9dac853", + "club_id": "cbf8c2c0-e10e-424d-936d-a537137b88bb", + "name": "Event for Indian Cultural Association", + "preview": "This club is holding an event.", + "description": "Join the Indian Cultural Association for a delightful evening celebrating Diwali, the festival of lights! Immerse yourself in the vibrant traditions of India with colorful decorations, mouth-watering Indian cuisine, and lively music and dance performances. This event is open to all students who are curious about Indian culture and want to experience the joy and togetherness of this festival. Whether you are an Indian American looking to connect with your roots or an international student eager to learn more about Indian traditions, this event promises to be a memorable and enriching experience for everyone. Come join us in spreading light, love, and laughter at the Indian Cultural Association's Diwali celebration!", + "event_type": "virtual", + "start_time": "2024-06-05 17:00:00", + "end_time": "2024-06-05 18:00:00", + "tags": [ + "Cultural" + ] + }, + { + "id": "455ff590-8e2c-4122-ad1d-ce07b052fdf4", + "club_id": "cbf8c2c0-e10e-424d-936d-a537137b88bb", + "name": "Event for Indian Cultural Association", + "preview": "This club is holding an event.", + "description": "Join the Indian Cultural Association for an enchanting evening of Diwali celebrations, where we'll dive into the vibrant traditions and customs surrounding the festival of lights. Experience the joy of Rangoli art, savor delicious traditional sweets, and participate in lively dance performances showcasing the diversity of Indian culture. Whether you're new to the festivities or a seasoned reveler, this event promises to be a delightful journey of exploration and camaraderie. Don't miss this opportunity to immerse yourself in the colors, flavors, and rhythms of India with friends old and new!", + "event_type": "virtual", + "start_time": "2026-04-21 19:30:00", + "end_time": "2026-04-21 21:30:00", + "tags": [ + "CommunityOutreach", + "Cultural", + "AsianAmerican" + ] + }, + { + "id": "f4e43f9a-6044-4c76-a915-fbd17315d382", + "club_id": "36a5df26-618b-41df-a3cb-dde9ef5dc82e", + "name": "Event for International Society for Pharmaceutical Engineering", + "preview": "This club is holding an event.", + "description": "Join us for an exciting evening dedicated to exploring the latest trends in pharmaceutical engineering! Our event will feature insightful presentations by industry experts, interactive discussions on cutting-edge technologies, and networking opportunities with fellow enthusiasts. Whether you're a seasoned professional or just starting your career in this dynamic field, this event promises to be a valuable and enriching experience for all attendees. Come discover, connect, and be inspired with the International Society for Pharmaceutical Engineering!", + "event_type": "hybrid", + "start_time": "2024-03-24 16:30:00", + "end_time": "2024-03-24 20:30:00", + "tags": [ + "Pharmaceutical", + "EnvironmentalScience", + "Engineering", + "Biotechnology" + ] + }, + { + "id": "0c47aa24-32aa-4041-b378-7d2f0103a9cf", + "club_id": "3b60daa3-1956-461b-b7f7-4811f698a100", + "name": "Event for KADA K-Pop Dance Team", + "preview": "This club is holding an event.", + "description": "Join the KADA K-Pop Dance Team for an electrifying evening of dance and celebration! Immerse yourself in the vibrant world of K-Pop as our talented members showcase their passion and skills on stage. Whether you're a seasoned dancer or just starting out, this event promises a welcoming atmosphere where you can learn, grow, and connect with fellow K-Pop enthusiasts. Get ready to groove to your favorite beats, make new friends, and experience the unique energy that only KADA can bring. Come be a part of our community as we dance, laugh, and create unforgettable memories together!", + "event_type": "in_person", + "start_time": "2025-05-27 16:00:00", + "end_time": "2025-05-27 20:00:00", + "tags": [ + "CommunityOutreach" + ] + }, + { + "id": "5a0e6db1-1f92-43ea-84ff-a3dfcaf43c61", + "club_id": "3b60daa3-1956-461b-b7f7-4811f698a100", + "name": "Event for KADA K-Pop Dance Team", + "preview": "This club is holding an event.", + "description": "Join us for an unforgettable evening of K-Pop dance magic with the talented members of KADA K-Pop Dance Team! Whether you're a seasoned dancer or just starting out, this event promises a fun and inclusive atmosphere where you can groove to your favorite K-Pop hits and learn some new moves. Get ready to embrace the energy, passion, and creativity of K-Pop culture while making new friends who share your love for dance. Don't miss this opportunity to experience the vibrant spirit of our community and unleash your inner performer on the dance floor!", + "event_type": "virtual", + "start_time": "2025-12-09 20:00:00", + "end_time": "2025-12-09 23:00:00", + "tags": [ + "Music" + ] + }, + { + "id": "62d307b8-4f83-4403-a837-9857e7f58fbd", + "club_id": "3b60daa3-1956-461b-b7f7-4811f698a100", + "name": "Event for KADA K-Pop Dance Team", + "preview": "This club is holding an event.", + "description": "Join KADA K-Pop Dance Team for an exhilarating evening of dance and cultural celebration! Experience the infectious energy and passion as our talented dancers showcase their skills and share their love for Korean popular culture. Whether you're a seasoned dancer or just starting out, this event is the perfect opportunity to immerse yourself in a supportive community that promotes inclusivity, growth, and empowerment. Get ready to groove to the latest K-Pop hits, learn new moves, and make unforgettable memories with fellow dance enthusiasts. Don't miss out on this exciting chance to be a part of something special with KADA!", + "event_type": "in_person", + "start_time": "2024-12-26 12:15:00", + "end_time": "2024-12-26 15:15:00", + "tags": [ + "Music", + "CommunityOutreach" + ] + }, + { + "id": "7a43b7c4-14b1-46bd-b838-4e4786f016de", + "club_id": "bb7b63e9-8462-4158-b96e-74863ffc7062", + "name": "Event for LatAm Business Club", + "preview": "This club is holding an event.", + "description": "Join us at the LatAm Business Club's upcoming 'Investing in Latin America' panel event, where a diverse group of industry experts will share insights and best practices on navigating the dynamic business landscape of the region. Whether you're new to investing in Latin America or looking to expand your existing ventures, this event is the perfect opportunity to connect with like-minded individuals, gain valuable knowledge, and grow your professional network. Don't miss out on this evening of stimulating discussions, fruitful networking, and the chance to explore exciting investment opportunities in Latin America!", + "event_type": "hybrid", + "start_time": "2025-12-19 20:00:00", + "end_time": "2025-12-19 21:00:00", + "tags": [ + "Networking" + ] + }, + { + "id": "01c679c6-e0cd-429a-9322-0e1ba78eede7", + "club_id": "bb7b63e9-8462-4158-b96e-74863ffc7062", + "name": "Event for LatAm Business Club", + "preview": "This club is holding an event.", + "description": "Join us at the LatAm Business Club for our 'Entrepreneurial Insights in Latin America' event! In this gathering, we will delve into the dynamic business landscape of Latin America, sharing valuable knowledge and practical advice for aspiring and seasoned entrepreneurs alike. Engage with industry experts, connect with like-minded individuals, and gain unique perspectives on the opportunities and challenges present in the region. Whether you're looking to start your own venture, expand your business internationally, or simply explore the diverse market dynamics of Latin America, this event offers a welcoming space for learning, networking, and fostering entrepreneurial spirit. Don't miss out on this enriching experience where collaboration meets innovation in a vibrant and supportive environment!", + "event_type": "hybrid", + "start_time": "2025-10-11 13:30:00", + "end_time": "2025-10-11 16:30:00", + "tags": [ + "ProfessionalGrowth", + "Entrepreneurship", + "Networking", + "BusinessDevelopment", + "GeopoliticalDialogue" + ] + }, + { + "id": "d97bcb87-5893-4aa5-bc31-eb0efa987630", + "club_id": "bb7b63e9-8462-4158-b96e-74863ffc7062", + "name": "Event for LatAm Business Club", + "preview": "This club is holding an event.", + "description": "Join us for a lively networking event at the LatAm Business Club! Connect with a diverse group of professionals and entrepreneurs who share a passion for the Latin American business landscape. Engage in stimulating conversations, exchange valuable insights, and forge new connections in a welcoming and supportive environment. Whether you're looking to expand your business horizons, explore growth opportunities, or simply immerse yourself in Latin American culture, this event offers the perfect platform to learn, connect, and grow together. Come be a part of our vibrant community and experience the energy and excitement of the LatAm Business Club!", + "event_type": "hybrid", + "start_time": "2025-12-11 12:30:00", + "end_time": "2025-12-11 14:30:00", + "tags": [ + "ProfessionalGrowth", + "Networking", + "LatinAmerica" + ] + }, + { + "id": "3ecf1a5e-9d6b-4b82-99a3-b937cc653f08", + "club_id": "7191f9a3-a824-42da-a7dd-5eeb1f96d53f", + "name": "Event for Musicheads", + "preview": "This club is holding an event.", + "description": "Join Musicheads for our next Album Club event, where we will be diving into a captivating selection of music that will have you grooving all week long! Whether you're a seasoned music enthusiast or just starting to explore different genres, our Album Club provides the perfect platform to share your thoughts and discover new favorite tunes. Don't miss out on the opportunity to connect with fellow music lovers, exchange recommendations, and immerse yourself in the vibrant world of music appreciation. Mark your calendars and get ready for a fun and engaging musical experience that will leave you inspired and entertained!", + "event_type": "hybrid", + "start_time": "2024-06-17 23:15:00", + "end_time": "2024-06-18 00:15:00", + "tags": [ + "Music", + "CommunityOutreach", + "CreativeWriting" + ] + }, + { + "id": "5b886e2b-f5bf-4adf-90bd-619bcc1a9316", + "club_id": "1e20ef65-990e-478b-8695-560f2aa8b5d2", + "name": "Event for NAAD (Northeastern A Cappella Association for Desi Music)", + "preview": "This club is holding an event.", + "description": "Join NAAD for an enchanting evening celebrating the rich tapestry of South Asian music! Immerse yourself in the melodious world of Hindustani classical, Ghazal, Qawali, and Carnatic music brought to life through the captivating art of A Cappella. Our diverse ensemble, hailing from Afghanistan to Sri Lanka, harmoniously blends traditional sounds with a modern twist, promising a musical experience like no other. Whether you're a seasoned enthusiast or curious newcomer, this event offers a vibrant platform to connect with fellow music lovers and explore the soulful depths of Desi music. Let the eternal sound of NAAD resonate within you as we come together in harmony and celebration.", + "event_type": "in_person", + "start_time": "2026-06-09 23:00:00", + "end_time": "2026-06-10 03:00:00", + "tags": [ + "Music" + ] + }, + { + "id": "427f532e-6fb3-497b-8b3a-5346abe61ff5", + "club_id": "1e20ef65-990e-478b-8695-560f2aa8b5d2", + "name": "Event for NAAD (Northeastern A Cappella Association for Desi Music)", + "preview": "This club is holding an event.", + "description": "Join NAAD (Northeastern A Cappella Association for Desi Music) for an enchanting evening celebrating the diverse musical traditions of South Asia. Immerse yourself in the soulful melodies of hindustani classical, the poetic verses of ghazal, and the ecstatic rhythms of qawali. Experience a fusion of cultures and harmonies as our talented musicians from Afghanistan, Bangladesh, Bhutan, India, Maldives, Nepal, Pakistan, and Sri Lanka come together to create a mesmerizing performance. Discover the beauty of A Cappella music infused with the rich tapestry of South Asian sounds at Northeastern University. Be a part of a vibrant community of music lovers and let the eternal Sound of NAAD resonate through your very being.", + "event_type": "hybrid", + "start_time": "2024-04-12 14:15:00", + "end_time": "2024-04-12 15:15:00", + "tags": [ + "CreativeWriting", + "AsianAmerican", + "Music" + ] + }, + { + "id": "dd50c57b-a131-448a-9214-d75fd5c3b2d7", + "club_id": "185eaaf8-8ac0-4095-9027-60caf0e9cba7", + "name": "Event for Naloxone Outreach and Education Initiative", + "preview": "This club is holding an event.", + "description": "Join us at the Naloxone Outreach and Education Initiative's upcoming event where we will provide hands-on training on recognizing the signs of an opioid overdose, administering naloxone, and effectively responding to opioid emergencies. Our experienced educators will guide you through the steps to save a life and empower you with the knowledge and tools to make a difference in your community. This interactive session will also include information on accessing free naloxone kits, fentanyl test strips, and additional resources to support overdose prevention and harm reduction efforts. Come be part of a supportive environment where we work together to combat the opioid crisis, challenge stigmas, and create a safer, more informed community.", + "event_type": "in_person", + "start_time": "2026-07-07 21:15:00", + "end_time": "2026-07-07 22:15:00", + "tags": [ + "Education", + "Volunteerism", + "HumanRights", + "CommunityOutreach", + "Health" + ] + }, + { + "id": "d010d965-a310-4df4-b3f5-e698f40a5562", + "club_id": "8c5e399e-3a7c-4ca6-8f05-7c5f385d5237", + "name": "Event for Network of Enlightened Women at Northeastern", + "preview": "This club is holding an event.", + "description": "Join the Network of Enlightened Women at Northeastern for an engaging evening of discussions on current events, networking with like-minded individuals, and insightful professional development training. This event is the perfect opportunity to connect with fellow members, gain valuable knowledge, and take the next step in empowering yourself as a principled leader. Come be a part of our vibrant community and explore how you can advocate for pro-liberty ideas with confidence and purpose!", + "event_type": "hybrid", + "start_time": "2026-08-27 19:30:00", + "end_time": "2026-08-27 23:30:00", + "tags": [ + "Christianity", + "CommunityOutreach", + "Leadership", + "Conservative", + "Volunteerism", + "PublicPolicy", + "ProfessionalDevelopment" + ] + }, + { + "id": "0f09ede1-4b85-46da-bacf-acd346832396", + "club_id": "8c5e399e-3a7c-4ca6-8f05-7c5f385d5237", + "name": "Event for Network of Enlightened Women at Northeastern", + "preview": "This club is holding an event.", + "description": "Join the Network of Enlightened Women at Northeastern for an engaging evening of insightful discussions on current events and networking with like-minded women. This event will provide a platform for professional development training and opportunities for service work, all while fostering a supportive community of strong, principled leaders. Whether you're looking to make new friends, enhance your knowledge on conservative issues, or take the next step in your leadership journey, this event is designed to empower you to confidently advocate for pro-liberty ideas in all aspects of your life.", + "event_type": "in_person", + "start_time": "2026-12-19 19:00:00", + "end_time": "2026-12-19 22:00:00", + "tags": [ + "Christianity", + "ProfessionalDevelopment", + "Volunteerism" + ] + }, + { + "id": "15e9f909-0efb-4bb7-bff8-07a3058a80a4", + "club_id": "52b6aff9-b528-4166-981c-538c2a88ec6d", + "name": "Event for North African Student Association", + "preview": "This club is holding an event.", + "description": "Join the North African Student Association for an evening of cultural celebration! Immerse yourself in the vibrant traditions of North Africa with live music, delicious cuisine, and engaging conversations. This event offers a fantastic opportunity to connect with fellow students who share your interests in North African heritage. Come learn about the rich history and diverse customs of North Africa while enjoying a warm and inviting atmosphere. Whether you're of North African descent or simply curious about the culture, all are welcome to join us for this unforgettable experience!", + "event_type": "virtual", + "start_time": "2024-06-11 21:15:00", + "end_time": "2024-06-12 01:15:00", + "tags": [ + "CulturalAwareness" + ] + }, + { + "id": "de1f6486-644c-4ed4-a095-9c9fa18cbd24", + "club_id": "565fc7e8-dbdc-449b-aa92-55e39f81e472", + "name": "Event for Northeastern University Physical Therapy Club", + "preview": "This club is holding an event.", + "description": "Join the Northeastern University Physical Therapy Club for an engaging Wellness Fair as part of the National Physical Therapy Month celebrations! This fun and informative event will feature interactive booths with health screenings, fitness challenges, and expert advice on maintaining optimal physical well-being. Meet fellow students in the Physical Therapy program, learn about the latest advancements in the field, and discover practical tips for promoting overall wellness. Don't miss this opportunity to connect with peers, professors, and industry professionals while enjoying a day of health-focused activities and community building!", + "event_type": "in_person", + "start_time": "2025-06-04 22:15:00", + "end_time": "2025-06-05 01:15:00", + "tags": [ + "Volunteerism", + "Healthcare", + "CommunityOutreach", + "PublicRelations" + ] + }, + { + "id": "c0fc16c1-fc02-4205-ab49-b5278d0e9ef1", + "club_id": "37403528-45cd-4d8b-b456-7d801abbf08d", + "name": "Event for null NEU", + "preview": "This club is holding an event.", + "description": "Join us for an exciting hands-on workshop hosted by null NEU, where you can learn the latest techniques in cybersecurity defense while networking with fellow enthusiasts. Our experienced mentors will guide you through practical exercises, sharing valuable insights and tips to enhance your digital safety skills. Don't miss this interactive opportunity to deepen your understanding of cybersecurity in a supportive and engaging environment!", + "event_type": "hybrid", + "start_time": "2025-10-01 19:00:00", + "end_time": "2025-10-01 23:00:00", + "tags": [ + "Networking", + "Cybersecurity" + ] + }, + { + "id": "a5d9cd65-b65b-468f-8028-32aa70bc4d3e", + "club_id": "37403528-45cd-4d8b-b456-7d801abbf08d", + "name": "Event for null NEU", + "preview": "This club is holding an event.", + "description": "Join us at null NEU for our upcoming workshop on Practical Ethical Hacking Techniques! Dive into the fascinating world of cybersecurity with hands-on activities, live demos, and expert guidance. Whether you're a novice or seasoned pro, this event is designed to boost your skills and confidence in ethical hacking. Don't miss this opportunity to learn, network, and have fun exploring the realm of digital security with us!", + "event_type": "virtual", + "start_time": "2025-09-10 21:00:00", + "end_time": "2025-09-10 23:00:00", + "tags": [ + "DataScience", + "Networking" + ] + }, + { + "id": "a8beaa4b-42b0-4864-a473-65e54eb415bd", + "club_id": "37403528-45cd-4d8b-b456-7d801abbf08d", + "name": "Event for null NEU", + "preview": "This club is holding an event.", + "description": "Join null NEU for a captivating workshop on the fundamentals of cryptography, where you'll unravel the mysteries of encryption techniques and dive into the world of secure communication. Our cybersecurity experts will guide you through hands-on activities, demystifying complex concepts and empowering you to strengthen your digital defenses. Whether you're a beginner eager to explore the realm of cybersecurity or a seasoned pro looking to sharpen your skills, this engaging event promises to be an enlightening experience for all! Don't miss this opportunity to expand your knowledge and network with like-minded enthusiasts in a welcoming and supportive environment.", + "event_type": "in_person", + "start_time": "2025-08-05 20:30:00", + "end_time": "2025-08-05 21:30:00", + "tags": [ + "Networking", + "DataScience", + "Coding", + "SoftwareEngineering", + "Cybersecurity" + ] + }, + { + "id": "6345bebd-e049-48f3-a6f3-118c9ed2b115", + "club_id": "67c976b8-e3bb-4ef7-adc4-d41d1ae48830", + "name": "Event for Orthodox Christian Fellowship", + "preview": "This club is holding an event.", + "description": "Join Orthodox Christian Fellowship this Saturday for a special event focused on deepening our understanding of the Eastern Orthodox faith. You will have the opportunity to engage in fellowship with like-minded students, participate in educational discussions about our beliefs, and come together in worship through prayer and reflection. Additionally, we will discuss upcoming service opportunities where you can make a positive impact in the community. Whether you are curious about our traditions or looking to connect with others who share your values, this event promises a welcoming and enriching experience for all attendees.", + "event_type": "virtual", + "start_time": "2025-09-10 17:30:00", + "end_time": "2025-09-10 18:30:00", + "tags": [ + "Christianity", + "Education" + ] + }, + { + "id": "9ba7abc0-70ed-4f90-9c19-07db78448b55", + "club_id": "67c976b8-e3bb-4ef7-adc4-d41d1ae48830", + "name": "Event for Orthodox Christian Fellowship", + "preview": "This club is holding an event.", + "description": "Join the Orthodox Christian Fellowship for an enlightening evening dedicated to exploring the 'Four Pillars of OCF' - Fellowship, Education, Worship, and Service! Immerse yourself in a welcoming atmosphere where students can share experiences, engage with the Church, and deepen their faith alongside like-minded peers. This event will offer a unique opportunity to learn about the Eastern Orthodox faith, strengthen your spiritual connection, and discover ways to serve the community both within and outside the club. Don't miss out on this chance to be part of a vibrant and compassionate community that fosters growth, learning, and service!", + "event_type": "virtual", + "start_time": "2026-11-01 19:15:00", + "end_time": "2026-11-01 21:15:00", + "tags": [ + "Christianity" + ] + }, + { + "id": "93909726-456e-40e7-9e96-5922ca6e6b46", + "club_id": "67c976b8-e3bb-4ef7-adc4-d41d1ae48830", + "name": "Event for Orthodox Christian Fellowship", + "preview": "This club is holding an event.", + "description": "Join the Orthodox Christian Fellowship for our upcoming event where we will gather together to deepen our understanding of Eastern Orthodox Christianity through engaging discussions, educational sessions, and heartfelt worship. This event will provide a welcoming space for students to share their experiences and grow in fellowship with one another. Come learn more about our faith, strengthen your bond with God through prayer and thankfulness, and discover meaningful ways to serve others in our community. Whether you're new to the club or a longtime member, all are encouraged to participate and connect with the “Four Pillars of OCF” \u2013 Fellowship, Education, Worship, and Service.", + "event_type": "virtual", + "start_time": "2024-05-15 21:00:00", + "end_time": "2024-05-16 01:00:00", + "tags": [ + "Fellowship", + "Education", + "Volunteerism" + ] + }, + { + "id": "88614fc4-f5a4-48fd-8e1b-0c121480c737", + "club_id": "cd768106-ee11-4e65-9e33-100e02393c23", + "name": "Event for Pages for Pediatrics at NEU", + "preview": "This club is holding an event.", + "description": "Join Pages for Pediatrics at NEU for a heartwarming Storybook Showcase event! Immerse yourself in the magical world of children's literature as we share stories of resilience, hope, and friendship through our special pediatric-themed storybooks. Learn how our narrative mirroring technique normalizes patient adversity and promotes disability representation while combatting stigma surrounding pediatric conditions. Discover how you can support our mission by attending our event, where we will raise funds to produce and distribute therapeutic books to pediatric patients in need. Be a part of spreading comfort and solidarity to young readers at Boston Children's Hospital and beyond. Don't miss this opportunity to make a difference in the lives of children and connect with our compassionate community of book lovers and advocates!", + "event_type": "hybrid", + "start_time": "2025-03-27 14:15:00", + "end_time": "2025-03-27 17:15:00", + "tags": [ + "Volunteerism" + ] + }, + { + "id": "cfb339cf-cd79-4f8b-8a8e-a519c8091f91", + "club_id": "cd768106-ee11-4e65-9e33-100e02393c23", + "name": "Event for Pages for Pediatrics at NEU", + "preview": "This club is holding an event.", + "description": "Join Pages for Pediatrics at NEU for our upcoming 'Storybook Night' event! Come together for an evening filled with heartwarming tales that inspire hope, comfort, and resilience in pediatric patients. Discover how our narrative mirroring approach normalizes patient adversity and advocates for disability representation, while combating stigma towards pediatric conditions. Learn how you can support our cause by participating in fun activities, enjoying refreshments, and contributing to our fundraising efforts to provide therapeutic storybooks to children in need. Don't miss this opportunity to make a difference in the lives of young patients at Boston Children's Hospital and beyond. All are welcome to join us in spreading love, positivity, and community outreach!", + "event_type": "in_person", + "start_time": "2024-04-16 12:15:00", + "end_time": "2024-04-16 14:15:00", + "tags": [ + "CommunityOutreach", + "HumanRights", + "VisualArts", + "CreativeWriting" + ] + }, + { + "id": "591831b4-b1b3-46e6-8bcc-5c25382a582a", + "club_id": "cd768106-ee11-4e65-9e33-100e02393c23", + "name": "Event for Pages for Pediatrics at NEU", + "preview": "This club is holding an event.", + "description": "Join us for a heartwarming afternoon of storytelling at Pages for Pediatrics at NEU's Annual Storybook Extravaganza! Come experience the magic of narrative mirroring as we share tales of hope, comfort, and solidarity through our unique children\u2019s storybooks. Learn how these stories are making a difference in pediatric patient care by normalizing patient adversity, advocating for disability representation, and combating stigma towards pediatric conditions. This special event aims to raise funds for the production and distribution of our therapeutic books, ensuring that every child has access to these inspiring tales. Together, we'll make a positive impact on children's lives while enjoying an enchanting day of community support and storytelling. Don't miss this opportunity to be a part of something truly meaningful!", + "event_type": "virtual", + "start_time": "2026-04-18 14:00:00", + "end_time": "2026-04-18 15:00:00", + "tags": [ + "VisualArts", + "HumanRights", + "Volunteerism", + "CommunityOutreach" + ] + }, + { + "id": "1d1bc6db-b560-4a65-b2bb-b8880c70c0c8", + "club_id": "1b091bfa-da37-476e-943d-86baf5929d8c", + "name": "Event for Poker Club", + "preview": "This club is holding an event.", + "description": "Join us for a fun evening of Poker at Poker Club's Campus Game Night! Whether you're a seasoned Poker player or a complete beginner, everyone is welcome to join in on the excitement. Our experienced members will be there to provide guidance and tips for those looking to improve their skills. Don't miss out on this opportunity to play in a friendly and non-competitive environment, where the only thing at stake is the thrill of the game. Plus, there will be fantastic prizes up for grabs, so come prepared for some friendly competition and a chance to win big! See you there!", + "event_type": "virtual", + "start_time": "2025-08-08 12:00:00", + "end_time": "2025-08-08 13:00:00", + "tags": [ + "Volunteerism", + "CommunityOutreach", + "PerformingArts" + ] + }, + { + "id": "b393e0d3-0e0a-416f-8649-007ad1af50f8", + "club_id": "1b091bfa-da37-476e-943d-86baf5929d8c", + "name": "Event for Poker Club", + "preview": "This club is holding an event.", + "description": "Join us for an exciting Poker Fundamentals Workshop at Poker Club! Whether you're a beginner looking to learn the basics or a seasoned player wanting to refine your skills, this workshop is open to poker enthusiasts of all levels. Our experienced members will cover essential strategies, tips, and tricks to help you improve your game. Plus, there will be opportunities to practice your newfound knowledge through friendly gameplay with fellow club members. Don't miss this chance to enhance your poker skills in a fun and supportive environment!", + "event_type": "hybrid", + "start_time": "2026-06-06 21:00:00", + "end_time": "2026-06-06 22:00:00", + "tags": [ + "CommunityOutreach", + "Volunteerism" + ] + }, + { + "id": "ce553717-3d0d-4df1-8903-a7fdea2934ee", + "club_id": "d456f9ad-6af0-4e0f-8c1b-8ca656bfc5a2", + "name": "Event for Queer Caucus", + "preview": "This club is holding an event.", + "description": "Join us at Queer Caucus for a special networking event where you can meet and connect with other queer students and allies in a inclusive and supportive environment. This event will feature engaging discussions on current LGBTQ+ issues, opportunities for personal and professional growth, and a chance to build lasting friendships within the community. Whether you're a seasoned member or newly curious about our club, everyone is welcome to participate and contribute to making our queer space at NUSL even more vibrant and empowering. Come join us and see why Queer Caucus is at the forefront of creating a welcoming and affirming space for all diverse identities within our law school community!", + "event_type": "hybrid", + "start_time": "2025-11-19 13:00:00", + "end_time": "2025-11-19 15:00:00", + "tags": [ + "HumanRights" + ] + }, + { + "id": "eb64cc68-0fcc-4b3c-b3a3-cb473167287d", + "club_id": "008998ca-8dc4-4d0b-8334-18123c6c051f", + "name": "Event for Real Talks", + "preview": "This club is holding an event.", + "description": "Join us at Real Talks for a captivating evening of open dialogue and meaningful connections. Our next event, 'Breaking Barriers', will feature inspiring speakers sharing their personal journeys of overcoming challenges and embracing change. Whether you're a long-time member or a first-time visitor, you'll find a warm and inclusive atmosphere where diverse perspectives are celebrated. Don't miss this opportunity to engage with like-minded individuals and nourish your mind and soul. Together, we can break barriers and build a community based on authenticity and mutual respect.", + "event_type": "in_person", + "start_time": "2026-07-04 22:15:00", + "end_time": "2026-07-04 23:15:00", + "tags": [ + "CommunityOutreach" + ] + }, + { + "id": "99cafed6-0c66-4791-9477-35c3818150e5", + "club_id": "008998ca-8dc4-4d0b-8334-18123c6c051f", + "name": "Event for Real Talks", + "preview": "This club is holding an event.", + "description": "Join us at Real Talks for an engaging evening where we dive into the art of effective communication. Whether you're a seasoned or budding communicator, this event promises insightful discussions, practical tips, and fun activities to enhance your skills. Welcoming all individuals eager to connect, learn, and grow in a supportive community setting. Don't miss this opportunity to fine-tune your communication prowess while making new friends at Real Talks!", + "event_type": "virtual", + "start_time": "2024-09-26 14:00:00", + "end_time": "2024-09-26 18:00:00", + "tags": [ + "Film" + ] + }, + { + "id": "07660452-4410-4502-906b-f72aed09aaa7", + "club_id": "d07fcf14-b256-4fe2-93d5-7d2f973a8055", + "name": "Event for ReNU", + "preview": "This club is holding an event.", + "description": "Join us at ReNU's upcoming event where we will be diving into the world of sustainable energy innovation! Together, we will be unraveling the mysteries of wind turbines and solar power systems, putting our heads together to design and build cutting-edge prototypes. Whether you're a seasoned engineer or just curious about renewable technologies, everyone is welcome to come learn, create, and have a blast. Get ready to be inspired and make a meaningful impact on our environment!", + "event_type": "virtual", + "start_time": "2026-11-24 14:00:00", + "end_time": "2026-11-24 15:00:00", + "tags": [ + "Prototype", + "RenewableEnergy", + "Engineering" + ] + }, + { + "id": "d437bfef-c64d-4829-9843-2a8da2677c1b", + "club_id": "690fbd88-f879-4e30-97fd-69b295456093", + "name": "Event for rev", + "preview": "This club is holding an event.", + "description": "Join us at rev's monthly Hack Night and bring your ideas to life in a collaborative and inclusive environment! Whether you're a seasoned coder, a budding designer, or just curious about tech, this is the perfect opportunity to network with like-minded individuals, get feedback on your projects, and explore new technologies together. Our mentors will be there to guide you, and who knows, you might even find your next project partner. Come and be a part of the vibrant hacker culture we're nurturing at rev, where innovation knows no bounds!", + "event_type": "virtual", + "start_time": "2024-09-01 15:15:00", + "end_time": "2024-09-01 18:15:00", + "tags": [ + "SoftwareEngineering" + ] + }, + { + "id": "242bf378-acf8-481f-be53-ab813323496c", + "club_id": "690fbd88-f879-4e30-97fd-69b295456093", + "name": "Event for rev", + "preview": "This club is holding an event.", + "description": "Join us for a stimulating Code Jam session at rev! Dive into a night of coding, networking, and collaborative project building with fellow students from diverse backgrounds at Northeastern University. Whether you're a seasoned coder or just starting out, this event is the perfect opportunity to immerse yourself in the innovative hacker culture of Boston. Bring your ideas to life, share your skills, and connect with like-minded peers who share your passion for tech and creativity. Let's build something amazing together!", + "event_type": "virtual", + "start_time": "2025-05-17 12:00:00", + "end_time": "2025-05-17 13:00:00", + "tags": [ + "CommunityOutreach", + "DataScience", + "SoftwareEngineering" + ] + }, + { + "id": "64862317-d8f3-4b8d-87c3-201fc0fc2193", + "club_id": "aa8f0ad8-09ff-4fc1-8609-96b3532ac51b", + "name": "Event for Rhythm Games Club", + "preview": "This club is holding an event.", + "description": "Join the Rhythm Games Club for our upcoming event, 'Beat Blast Jam'! Get ready to showcase your rhythmic prowess in a friendly and welcoming environment. From beginners to pros, everyone is invited to participate and groove to the beat. With a variety of music genres and game levels to choose from, there's something for everyone. Come join the fun and challenge yourself to some high-energy rhythms! Stay tuned for more details on our Discord channel at https://discord.gg/G4rUWYBqv3.", + "event_type": "in_person", + "start_time": "2025-06-19 18:30:00", + "end_time": "2025-06-19 19:30:00", + "tags": [ + "PerformingArts", + "CommunityOutreach", + "VisualArts" + ] + }, + { + "id": "502515f2-1537-4d2a-b56c-3e7b4881ce62", + "club_id": "2beeb1f8-b056-4827-9720-10f5bf15cc75", + "name": "Event for Scholars of Finance", + "preview": "This club is holding an event.", + "description": "Join us at our upcoming Scholars of Finance event, where we will dive into an engaging discussion on the ethical considerations shaping the future of finance. Get ready to connect with like-minded individuals passionate about financial literacy and responsible investment practices, all while exploring innovative solutions for global challenges. Whether you're a seasoned finance enthusiast or just beginning your journey, this event promises to inspire, educate, and equip you with the tools needed to make a positive impact in the world. We can't wait to see you there!", + "event_type": "in_person", + "start_time": "2025-06-24 20:30:00", + "end_time": "2025-06-25 00:30:00", + "tags": [ + "Education" + ] + }, + { + "id": "652622dc-7052-43b3-bb1e-6344755832be", + "club_id": "2beeb1f8-b056-4827-9720-10f5bf15cc75", + "name": "Event for Scholars of Finance", + "preview": "This club is holding an event.", + "description": "Join the Scholars of Finance for an engaging workshop on sustainable investing and ethical finance practices! Discover how you can make a positive impact on the world through your investment decisions while connecting with like-minded individuals who are passionate about financial literacy. Whether you're a beginner or an expert in the field, this event is your opportunity to learn, grow, and contribute to building a brighter future for generations to come. Come with an open mind and leave inspired to make a difference in the world of finance!", + "event_type": "hybrid", + "start_time": "2025-10-15 13:15:00", + "end_time": "2025-10-15 15:15:00", + "tags": [ + "Leadership", + "GlobalChallenges", + "Ethics", + "Education", + "Finance" + ] + }, + { + "id": "1c55f883-39d1-4743-85e2-3ad418e51518", + "club_id": "595b59ab-38c5-44cd-82e9-ddae9935567a", + "name": "Event for SPIC MACAY NU CHAPTER", + "preview": "This club is holding an event.", + "description": "Embark on a captivating evening of classical Kathak dance and Hindustani music fusion at the SPIC MACAY NU CHAPTER! Join us as we showcase the graceful footwork and expressive storytelling of Kathak maestros, accompanied by the enchanting melodies of Hindustani vocalists. Immerse yourself in the rhythmic beats and melodic nuances that define Indian performing arts, all while surrounded by a warm community of like-minded individuals passionate about cultural heritage. Whether you're a seasoned connoisseur or new to the world of Indian classical arts, this event promises to be a delightful journey of artistic exploration and appreciation. Come experience the magic of tradition and innovation harmoniously blending together in a celebration of artistic excellence.", + "event_type": "in_person", + "start_time": "2026-09-16 14:15:00", + "end_time": "2026-09-16 15:15:00", + "tags": [ + "CommunityOutreach", + "CulturalHeritage" + ] + }, + { + "id": "7ef568b7-4966-473f-b5da-5517f9c53d2a", + "club_id": "595b59ab-38c5-44cd-82e9-ddae9935567a", + "name": "Event for SPIC MACAY NU CHAPTER", + "preview": "This club is holding an event.", + "description": "Join us for an enchanting evening of classical Kathak dance as we showcase the graceful movements and expressive storytelling of this traditional Indian art form. Immerse yourself in the rhythms and emotions of Kathak as our talented performers captivate your senses and transport you to a world of beauty and grace. Whether you are a seasoned enthusiast or new to the wonders of Indian dance, this event promises to be a delightful experience for all. Don't miss this opportunity to witness the magic of Kathak and celebrate the rich cultural heritage it embodies with our vibrant community at SPIC MACAY NU CHAPTER!", + "event_type": "virtual", + "start_time": "2025-12-25 17:00:00", + "end_time": "2025-12-25 21:00:00", + "tags": [ + "CommunityOutreach", + "PerformingArts" + ] + }, + { + "id": "5bcf5eb7-3894-478a-a4fb-6936eea6ae1a", + "club_id": "595b59ab-38c5-44cd-82e9-ddae9935567a", + "name": "Event for SPIC MACAY NU CHAPTER", + "preview": "This club is holding an event.", + "description": "Join us for an enchanting evening of classical Kathak dance performance, a true celebration of grace, rhythm, and storytelling through movement. Immerse yourself in the elegance and intricacy of this traditional Indian art form as our talented dancers take you on a mesmerizing journey. Whether you're a seasoned Kathak enthusiast or new to its magic, this event offers a perfect opportunity to experience the beauty and cultural significance of this ancient dance style. Don't miss this chance to witness the artistry and passion of our performers, as we come together to honor and preserve the heritage of Indian classical dance at SPIC MACAY NU CHAPTER.", + "event_type": "in_person", + "start_time": "2026-08-19 12:30:00", + "end_time": "2026-08-19 15:30:00", + "tags": [ + "CulturalHeritage", + "Music", + "PerformingArts", + "VisualArts", + "CommunityOutreach" + ] + }, + { + "id": "4f45bdd7-ce7d-4e5d-853c-ab8c93176dad", + "club_id": "f4743b64-70d8-4ed8-a983-9668efdca146", + "name": "Event for The Libre Software Advocacy Group", + "preview": "This club is holding an event.", + "description": "Join The Libre Software Advocacy Group at our upcoming event, 'Open Source Fair: Exploring Digital Freedom'! Delve into the world of Libre Software and learn how it empowers individuals through collaboration, transparency, and user rights. Engage with like-minded enthusiasts, participate in hands-on workshops, and discover the potential of open-source solutions for a more innovative and inclusive digital landscape. Whether you're new to free software or a seasoned advocate, this event promises to be a celebration of ethical technology practices and the principles of digital freedom. Don't miss out on this opportunity to be a part of a community dedicated to advancing the cause of open-source software for the betterment of all!", + "event_type": "in_person", + "start_time": "2025-02-12 12:00:00", + "end_time": "2025-02-12 15:00:00", + "tags": [ + "OpenSource", + "EthicalTechnologyPractices" + ] + }, + { + "id": "cf2b400e-7711-4715-9b10-1854bf9661a2", + "club_id": "f4743b64-70d8-4ed8-a983-9668efdca146", + "name": "Event for The Libre Software Advocacy Group", + "preview": "This club is holding an event.", + "description": "Join The Libre Software Advocacy Group at our upcoming tech meetup where we'll explore the latest innovations in free and open-source software. Connect with like-minded individuals who share a passion for digital freedom and learn how you can contribute to a more collaborative and transparent digital landscape. Whether you're a seasoned developer or just starting your journey with Libre Software, this event is a welcoming space for all to exchange ideas, gain knowledge, and champion user rights together. Come be a part of our community focused on fostering innovation, inclusivity, and ethical technology practices for the betterment of society!", + "event_type": "in_person", + "start_time": "2026-11-15 23:30:00", + "end_time": "2026-11-16 03:30:00", + "tags": [ + "CommunityOutreach" + ] + }, + { + "id": "2f3cb854-d37b-43b0-8a0a-73888022de9a", + "club_id": "803fa5c5-feb8-4966-b3ff-0131f6887b6b", + "name": "Event for The Women's Network Northeastern", + "preview": "This club is holding an event.", + "description": "Join us for an engaging speaker event hosted by The Women's Network Northeastern, where you'll have the opportunity to hear from inspirational industry leaders sharing their career journeys and insights. Connect with fellow members in a welcoming and supportive environment as you expand your professional network. Don't miss this valuable opportunity to gain new perspectives, build confidence, and discover exciting career possibilities. Register now to secure your spot and be part of this empowering experience!", + "event_type": "hybrid", + "start_time": "2024-05-12 13:15:00", + "end_time": "2024-05-12 15:15:00", + "tags": [ + "CommunityBuilding", + "ProfessionalDevelopment", + "NetworkingEvents", + "WomenEmpowerment" + ] + }, + { + "id": "1665c2d9-fd6c-48e5-9c67-8baba5332c2d", + "club_id": "803fa5c5-feb8-4966-b3ff-0131f6887b6b", + "name": "Event for The Women's Network Northeastern", + "preview": "This club is holding an event.", + "description": "Join The Women's Network Northeastern for an exciting networking trip where you'll have the opportunity to connect with industry leaders and fellow ambitious women. This unique experience will not only expand your professional network but also provide insights and inspiration to help you advance in your career. Whether you're a student or a seasoned professional, this event is the perfect setting to gain valuable connections, boost your confidence, and explore new opportunities. Don't miss out on this empowering event that could potentially open doors to a brighter future for you! RSVP now at bit.ly/jointwn and follow us on Instagram @thewomensnetwork_northeastern for updates on this and other upcoming events.", + "event_type": "hybrid", + "start_time": "2025-04-10 13:00:00", + "end_time": "2025-04-10 14:00:00", + "tags": [ + "ProfessionalDevelopment", + "NetworkingEvents" + ] + }, + { + "id": "2931b267-6496-43e4-b30e-d4ba783de30f", + "club_id": "b3c62e9e-ff30-4720-addc-f8f299f13b1f", + "name": "Event for Undergraduate Law Review", + "preview": "This club is holding an event.", + "description": "Join the Undergraduate Law Review for an exciting panel discussion on current hot topics in the field of law! Our distinguished speakers, including legal professionals and academics, will provide valuable insights and diverse perspectives on issues shaping our legal landscape today. Whether you're a seasoned law enthusiast or just curious about the subject, this event is a wonderful opportunity to engage with like-minded individuals, ask questions, and expand your knowledge in a supportive environment. Come join us for an evening filled with engaging discussions, networking opportunities, and intellectual stimulation!", + "event_type": "in_person", + "start_time": "2026-08-24 17:00:00", + "end_time": "2026-08-24 21:00:00", + "tags": [ + "HumanRights", + "Journalism", + "CommunityOutreach" + ] + }, + { + "id": "55a250a6-3627-4d34-8e8b-0bb20dc5f001", + "club_id": "b3c62e9e-ff30-4720-addc-f8f299f13b1f", + "name": "Event for Undergraduate Law Review", + "preview": "This club is holding an event.", + "description": "Join the Undergraduate Law Review for an engaging panel discussion on current legal issues affecting undergraduate students. Our expert speakers will share their insights and experiences, offering valuable perspectives on navigating the legal landscape as a student. This event is open to all members of the Northeastern University community and promises to be an enlightening and thought-provoking experience. Don't miss this opportunity to expand your legal knowledge and network with like-minded peers in a welcoming and inclusive environment!", + "event_type": "hybrid", + "start_time": "2024-01-18 19:30:00", + "end_time": "2024-01-18 21:30:00", + "tags": [ + "Prelaw" + ] + }, + { + "id": "e534544d-b8cb-4a9b-b14d-b710e2485398", + "club_id": "b3c62e9e-ff30-4720-addc-f8f299f13b1f", + "name": "Event for Undergraduate Law Review", + "preview": "This club is holding an event.", + "description": "Join us for an engaging panel discussion on current legal issues impacting undergraduate students, featuring esteemed guest speakers from the legal field. This event offers a unique opportunity to delve into the intersections of law and academia in a welcoming and inclusive setting. Whether you're a law enthusiast or just curious about legal topics, this event promises thought-provoking conversations and valuable insights. Don't miss this chance to connect with like-minded individuals and expand your understanding of the legal landscape!", + "event_type": "virtual", + "start_time": "2026-11-25 13:30:00", + "end_time": "2026-11-25 17:30:00", + "tags": [ + "Journalism", + "Prelaw", + "CommunityOutreach" + ] + }, + { + "id": "8af0125c-ca78-4ccc-8356-91371cffb333", + "club_id": "778fc711-df60-4f1c-a886-01624419b219", + "name": "Event for United Against Trafficking", + "preview": "This club is holding an event.", + "description": "Join United Against Trafficking for our upcoming workshop on understanding the nuances of human trafficking and how we can collectively combat it. This interactive session will provide insights into the various forms of trafficking, share survivor stories, and explore ways to get involved in making a difference. Open to all members of the Northeastern University community, including students, faculty, and staff, this event offers a welcoming space to learn, connect, and take meaningful action towards a world free from exploitation and suffering. Come be a part of our mission to build a diverse and inclusive community dedicated to eradicating the horrors of trafficking and fostering a future where every individual's rights and dignity are upheld.", + "event_type": "virtual", + "start_time": "2025-09-01 17:00:00", + "end_time": "2025-09-01 18:00:00", + "tags": [ + "Collaboration", + "PublicRelations", + "Advocacy", + "CommunityOutreach", + "Volunteerism" + ] + }, + { + "id": "d02f25b6-2e52-4062-9084-8d2225ceac84", + "club_id": "7d62e8f0-7ebc-4699-a0de-c23a6e693f43", + "name": "Event for United Nations Association at Northeastern", + "preview": "This club is holding an event.", + "description": "Join us for an exciting Earth Day celebration where we will come together as a community to raise awareness about environmental issues and promote sustainable practices. This event will include interactive workshops, engaging discussions, and a fun eco-friendly project that everyone can participate in. Let's join hands to make a positive impact on our planet and show our commitment to achieving the Sustainable Development Goals. All are welcome to attend and be part of this meaningful and rewarding experience!", + "event_type": "hybrid", + "start_time": "2024-12-10 16:00:00", + "end_time": "2024-12-10 19:00:00", + "tags": [ + "HumanRights" + ] + }, + { + "id": "60d0c176-7afe-4e8b-b30c-22c3e4239d37", + "club_id": "7d62e8f0-7ebc-4699-a0de-c23a6e693f43", + "name": "Event for United Nations Association at Northeastern", + "preview": "This club is holding an event.", + "description": "Join us for our annual UN Day celebration where we come together to commemorate the founding of the United Nations and the shared vision for a better world. This festive event will feature engaging workshops, cultural performances, and insightful discussions on global issues. It's a great opportunity to connect with like-minded individuals, learn about the Sustainable Development Goals, and explore ways to make a difference in our local community. Whether you're a long-time advocate or new to global affairs, everyone is welcome to join us in celebrating the diversity and unity that the UN represents.", + "event_type": "hybrid", + "start_time": "2025-06-20 21:00:00", + "end_time": "2025-06-21 01:00:00", + "tags": [ + "Volunteerism", + "EnvironmentalAdvocacy", + "HumanRights", + "Journalism" + ] + }, + { + "id": "0748597f-2758-412e-a24d-c8ff6f4a332a", + "club_id": "3e68fb8f-9d0f-45d3-9a18-2915c8cf464a", + "name": "Event for Women\u2019s + Health Initiative at Northeastern", + "preview": "This club is holding an event.", + "description": "Join the Women\u2019s + Health Initiative at Northeastern for an enlightening discussion on the importance of proactive healthcare for individuals with uteruses. Our next event will focus on debunking myths and stigmas surrounding women\u2019s health, empowering attendees to take charge of their well-being. Learn about the latest advancements in healthcare tailored for diverse needs and engage in open conversations about breaking barriers to access quality care. Together, we can create a supportive community that champions health education and advocacy. See you there!", + "event_type": "in_person", + "start_time": "2024-02-04 21:00:00", + "end_time": "2024-02-05 00:00:00", + "tags": [ + "Women'sHealth" + ] + }, + { + "id": "4d1e527f-88da-4b23-b8e1-01e84aa9de36", + "club_id": "3e68fb8f-9d0f-45d3-9a18-2915c8cf464a", + "name": "Event for Women\u2019s + Health Initiative at Northeastern", + "preview": "This club is holding an event.", + "description": "Join the Women\u2019s + Health Initiative at Northeastern for an engaging and empowering event on menstrual health awareness! Learn about the importance of destigmatizing periods and promoting menstrual hygiene for individuals with uteruses. Our guest speaker, a local women\u2019s health expert, will share insightful information and practical tips on how to navigate menstrual health with confidence and understanding. Bring your questions and experiences to contribute to the open discussion, and leave with a greater sense of empowerment and knowledge to advocate for your own health and well-being.", + "event_type": "in_person", + "start_time": "2024-04-01 18:30:00", + "end_time": "2024-04-01 20:30:00", + "tags": [ + "HealthEducation", + "Journalism" + ] + }, + { + "id": "fc771d1c-1c20-4b34-bc75-119eb679b308", + "club_id": "3e68fb8f-9d0f-45d3-9a18-2915c8cf464a", + "name": "Event for Women\u2019s + Health Initiative at Northeastern", + "preview": "This club is holding an event.", + "description": "Join the Women\u2019s + Health Initiative at Northeastern for a special event focused on debunking myths and increasing awareness about common misconceptions surrounding women\u2019s health. In this empowering session, we'll discuss practical tips for taking charge of your health and navigating the complexities of healthcare. Whether you have a uterus or simply want to support this important cause, all are welcome to participate in this informative dialogue. Let's come together to learn, share, and grow in our journey towards better health for all genders!", + "event_type": "virtual", + "start_time": "2025-10-26 18:30:00", + "end_time": "2025-10-26 19:30:00", + "tags": [ + "Journalism" + ] + }, + { + "id": "53cda471-7edc-4137-bd38-3d3357b72387", + "club_id": "02ef6079-d907-4903-935a-bb5afd7e74d5", + "name": "Event for Aaroh", + "preview": "This club is holding an event.", + "description": "Join us at Aaroh's upcoming event where we celebrate the vibrant tapestry of Indian music! Immerse yourself in the melodious world of Bollywood hits, soul-stirring folk tunes, mesmerizing fusion beats, intricate Carnatic compositions, and soulful Hindustani classical ragas. Our gathering is a joyous occasion where music enthusiasts come together to share their love for diverse Indian music forms. Whether you're a seasoned musician or just starting your musical journey, our event provides a welcoming platform for everyone to connect, engage, and enjoy the rich heritage of Indian music. Don't miss this opportunity to be part of a community that celebrates the beauty and depth of Indian origin instruments through captivating performances, engaging discussions, and unforgettable musical experiences!", + "event_type": "hybrid", + "start_time": "2026-11-14 22:15:00", + "end_time": "2026-11-15 01:15:00", + "tags": [ + "CulturalDiversity", + "Music", + "IndianMusic", + "PerformingArts" + ] + }, + { + "id": "9ebc3618-eec5-4eba-a572-ad494a704018", + "club_id": "02ef6079-d907-4903-935a-bb5afd7e74d5", + "name": "Event for Aaroh", + "preview": "This club is holding an event.", + "description": "Join us at Aaroh's Musical Melange event where we celebrate the rich tapestry of Indian music! Immerse yourself in the vibrant sounds of Bollywood, folk, fusion, Carnatic, and Hindustani classical music. Our gathering is a welcoming space for music lovers to come together, share their passion, and explore the beauty of Indian origin instruments. Whether you're a seasoned musician or new to the scene, this event offers a platform for students to connect, engage in lively discussions, and perhaps even showcase their talents. Come experience the magic of musical diversity with Aaroh!", + "event_type": "hybrid", + "start_time": "2024-09-12 21:15:00", + "end_time": "2024-09-12 23:15:00", + "tags": [ + "CulturalDiversity", + "CommunityOutreach", + "PerformingArts", + "Music" + ] + }, + { + "id": "937ac0d4-0dd9-4d04-be5a-310992d24473", + "club_id": "88967bf8-2844-4899-b2a6-2652f5cfb9ac", + "name": "Event for Acting Out", + "preview": "This club is holding an event.", + "description": "Join us at our upcoming event, 'Acting for Change', where passionate actors and enthusiasts come together to perform thought-provoking pieces that shed light on important social issues. This event will not only showcase the talent and dedication of our members but also spark meaningful conversations that aim to inspire positive change in our community. Be a part of this powerful experience that combines artistry with activism, and join us in making a difference through the transformative power of theater.", + "event_type": "virtual", + "start_time": "2024-06-05 19:15:00", + "end_time": "2024-06-05 20:15:00", + "tags": [ + "PerformingArts" + ] + }, + { + "id": "929b49f6-6c1d-4a57-9561-fbdf98b6809e", + "club_id": "88967bf8-2844-4899-b2a6-2652f5cfb9ac", + "name": "Event for Acting Out", + "preview": "This club is holding an event.", + "description": "Join us for an engaging evening of thought-provoking performances and insightful discussions at Acting Out's latest event, 'Voices of Change'. This special event will showcase talented actors bringing to life powerful stories that aim to spark conversations and inspire positive social impact. Be a part of a community passionate about using the art of acting to advocate for meaningful change. Come celebrate creativity and activism with us at 'Voices of Change'!", + "event_type": "hybrid", + "start_time": "2024-06-12 23:15:00", + "end_time": "2024-06-13 03:15:00", + "tags": [ + "CommunityOutreach" + ] + }, + { + "id": "1870cf28-3564-4a05-b9c1-c910cbf0917c", + "club_id": "6df3912c-1ae1-4446-978c-11cb323c7048", + "name": "Event for Active Minds at NU", + "preview": "This club is holding an event.", + "description": "Join Active Minds at NU for a special art therapy workshop, filled with creative expression and stress-relieving activities. In this safe and supportive space, participants will have the opportunity to explore their emotions through art while learning about the importance of mental health self-care. No artistic experience is necessary - just bring your enthusiasm and an open mind! Connect with fellow students, share stories, and leave feeling inspired and empowered. Mark your calendars and bring a friend along to this enriching event!", + "event_type": "hybrid", + "start_time": "2026-07-09 19:15:00", + "end_time": "2026-07-09 22:15:00", + "tags": [ + "Neuroscience", + "Psychology" + ] + }, + { + "id": "ed484008-54c8-4845-817d-bdaa54ac2769", + "club_id": "8145ac02-c649-4525-8ce6-d4e074261445", + "name": "Event for Addiction Support and Awareness Group", + "preview": "This club is holding an event.", + "description": "Join the Addiction Support and Awareness Group for an interactive seminar on understanding addiction and its impact on our community. Discover the importance of creating a safe and supportive space for those struggling with substance use disorders. Learn about the alarming statistics related to addiction, such as the low percentage of individuals receiving treatment. Gain valuable insights into the opioid crisis affecting Massachusetts and the Boston-Cambridge-Quincy Area. This event aims to educate and empower attendees on how to navigate the challenges of addiction and offer support to those in need. Whether you're a concerned community member or a college student, this event is open to all who wish to make a positive difference in the lives of those affected by addiction.", + "event_type": "hybrid", + "start_time": "2026-02-08 17:15:00", + "end_time": "2026-02-08 21:15:00", + "tags": [ + "Volunteerism", + "Psychology", + "HumanRights", + "HealthAwareness" + ] + }, + { + "id": "724ab2c1-6e64-4990-bfe6-6ee81201af01", + "club_id": "8145ac02-c649-4525-8ce6-d4e074261445", + "name": "Event for Addiction Support and Awareness Group", + "preview": "This club is holding an event.", + "description": "Join us for an enlightening and supportive evening at our upcoming event hosted by the Addiction Support and Awareness Group! This event will focus on raising awareness about addiction and providing a safe space for individuals to share their experiences and receive guidance. Learn about the impact of substance use disorders in the northeastern community and how we can work together to combat stigma and promote understanding. Whether you're personally affected by addiction or simply want to show your support, all are welcome to join us in fostering a compassionate environment where knowledge and empathy flourish.", + "event_type": "virtual", + "start_time": "2024-01-08 13:00:00", + "end_time": "2024-01-08 14:00:00", + "tags": [ + "Psychology", + "HumanRights", + "CommunityOutreach", + "HealthAwareness" + ] + }, + { + "id": "131d1283-fecf-4776-a28c-3487c18decc0", + "club_id": "389cfa82-16cf-4ec1-b864-2a871b069a44", + "name": "Event for AerospaceNU", + "preview": "This club is holding an event.", + "description": "Join AerospaceNU for a thrilling Rocket Launch Day where we gather to send our latest creations soaring into the sky! It's a fun-filled event for members of all experience levels - from beginners eager to learn to seasoned rocket enthusiasts. Watch in awe as our rockets blast off, showcasing the hard work and dedication of our diverse and passionate members. Don't miss out on this exciting opportunity to witness engineering marvels take flight. Save the date and bring your friends to experience the magic of AerospaceNU!", + "event_type": "in_person", + "start_time": "2025-03-27 18:15:00", + "end_time": "2025-03-27 20:15:00", + "tags": [ + "Aerospace", + "CommunityOutreach" + ] + }, + { + "id": "e9d657c7-8ecd-41f9-b645-cfca06c8d50b", + "club_id": "389cfa82-16cf-4ec1-b864-2a871b069a44", + "name": "Event for AerospaceNU", + "preview": "This club is holding an event.", + "description": "Join us for our annual Model Rocket Launch event! At AerospaceNU, we're all about reaching new heights - literally. This event is perfect for beginners and enthusiasts alike, providing a hands-on experience in rocketry and a chance to witness some incredible launches. You'll have the opportunity to learn about rocket design, aerodynamics, and safety measures from experienced members of our club. Bring your own rockets or use one of ours, and feel the excitement as they blast off into the sky. Don't miss this chance to be part of a thrilling day filled with innovation, teamwork, and a whole lot of fun!", + "event_type": "in_person", + "start_time": "2025-10-09 23:30:00", + "end_time": "2025-10-10 02:30:00", + "tags": [ + "Aerospace" + ] + }, + { + "id": "4ad1ab51-53be-4ab8-9c93-14622d4e5003", + "club_id": "9ad47970-206b-4b78-be2b-f36b3e9c2e07", + "name": "Event for African Graduate Students Association", + "preview": "This club is holding an event.", + "description": "Join us for an exciting cultural extravaganza hosted by the African Graduate Students Association! Immerse yourself in the vibrant rhythms and flavors of Africa as we celebrate our diverse heritage through music, dance, and cuisine. This event offers a unique opportunity to connect with fellow students, share experiences, and build lasting friendships. Come be a part of this enriching experience that promises to inspire, educate, and entertain all who attend!", + "event_type": "virtual", + "start_time": "2026-03-24 21:15:00", + "end_time": "2026-03-24 22:15:00", + "tags": [ + "LeadershipEmpowerment", + "AfricanAmerican", + "GlobalEngagement" + ] + }, + { + "id": "98463a1a-2999-491b-9358-8be7b5e62110", + "club_id": "9ad47970-206b-4b78-be2b-f36b3e9c2e07", + "name": "Event for African Graduate Students Association", + "preview": "This club is holding an event.", + "description": "Join the African Graduate Students Association for an exciting Cultural Showcase event where members will have the opportunity to celebrate and share the diverse and vibrant cultures of Africa. Enjoy a night of traditional music, dance, and cuisine as we come together to embrace our heritage and strengthen the sense of community within our university. This event will not only be entertaining but also educational, offering a unique opportunity to learn about the rich cultural tapestry of Africa while fostering connections and friendships among students from different backgrounds. Don't miss out on this unforgettable experience that promises to unite us through the beauty of our shared roots!", + "event_type": "in_person", + "start_time": "2024-11-22 22:15:00", + "end_time": "2024-11-22 23:15:00", + "tags": [ + "GlobalEngagement", + "LeadershipEmpowerment", + "CommunityBuilding" + ] + }, + { + "id": "a563c310-0ac4-4b67-a8b2-bec4b7ba1f6f", + "club_id": "e6fbe5d2-1049-47e1-a2c9-de5389dd1413", + "name": "Event for afterHOURS", + "preview": "This club is holding an event.", + "description": "Join us at afterHOURS for an unforgettable open mic night where talented students showcase their creativity through music, poetry, and comedy performances. Enjoy the cozy ambiance, delicious Starbucks beverages, and support our vibrant community of student artists. Whether you're looking to perform or simply soak in the talent, this event promises to be a night full of laughter, inspiration, and connection. See you there!", + "event_type": "hybrid", + "start_time": "2026-06-23 16:00:00", + "end_time": "2026-06-23 18:00:00", + "tags": [ + "Music", + "CommunityOutreach" + ] + }, + { + "id": "be83bd22-638a-4000-aaee-9d2d2115fbd2", + "club_id": "e6fbe5d2-1049-47e1-a2c9-de5389dd1413", + "name": "Event for afterHOURS", + "preview": "This club is holding an event.", + "description": "Join us at afterHOURS for a night of electrifying live music and good vibes! Our diverse and talented lineup of student performers will have you grooving all night long. Enjoy the cozy atmosphere, sip on your favorite Starbucks drink, and mingle with fellow music lovers. Whether you're into indie, rock, or hip-hop, there's something for everyone at afterHOURS. Come make unforgettable memories with us!", + "event_type": "virtual", + "start_time": "2025-09-16 20:30:00", + "end_time": "2025-09-16 23:30:00", + "tags": [ + "CommunityOutreach", + "Film", + "Music" + ] + }, + { + "id": "f2803fba-1f0a-49d0-9dfe-85abebb21de5", + "club_id": "f194ecf9-204a-45d3-92ab-c405f3bdff25", + "name": "Event for Agape Christian Fellowship", + "preview": "This club is holding an event.", + "description": "Join us at Agape Christian Fellowship's next event, where we'll gather as a vibrant and inclusive community of students passionate about faith and friendship. Experience an evening filled with inspiring worship, engaging discussions, and heartfelt connections. Whether you're seeking spiritual growth, meaningful conversations, or simply a welcoming space to belong, our Thursday meeting at 7:30PM in West Village G 02 is the perfect opportunity to explore, learn, and connect with like-minded individuals. We can't wait to share this uplifting experience with you, so mark your calendar and come be a part of something special!", + "event_type": "virtual", + "start_time": "2025-08-06 13:15:00", + "end_time": "2025-08-06 15:15:00", + "tags": [ + "HumanRights", + "CommunityOutreach", + "CommunityOutreach", + "Volunteerism" + ] + }, + { + "id": "00593b0a-4abc-441d-a38b-97b7102d13db", + "club_id": "6443f16e-2afd-468d-b4f6-26697a7f6f43", + "name": "Event for Alliance for Diversity in Science and Engineering", + "preview": "This club is holding an event.", + "description": "Join the Alliance for Diversity in Science and Engineering for our upcoming Summer Involvement Fair Information Session! This exciting event is a fantastic opportunity to learn more about our organization and the amazing opportunities we have in store for you this year. Dive into a world of diversity and acceptance as we showcase non-traditional career paths and share experiences from underrepresented minorities in STEM. Whether you're a student, a scientist, or simply curious about opportunities in the sciences, this event is open to all ages and backgrounds. Connect with like-minded individuals from across the nation, discover new pathways in the world of science, and let us guide you towards a future full of exciting possibilities. Don't miss out on this chance to be inspired and educated \u2013 mark your calendars and get ready to be a part of something truly special!", + "event_type": "hybrid", + "start_time": "2024-03-20 19:30:00", + "end_time": "2024-03-20 23:30:00", + "tags": [ + "CommunityOutreach", + "STEM", + "Volunteerism", + "Engineering" + ] + }, + { + "id": "0f7c5c84-c56b-4ecf-bdea-3317fd77ba7b", + "club_id": "6443f16e-2afd-468d-b4f6-26697a7f6f43", + "name": "Event for Alliance for Diversity in Science and Engineering", + "preview": "This club is holding an event.", + "description": "Join us for our upcoming Virtual Panel Discussion on 'Empowering Underrepresented Voices in STEM' where we'll hear perspectives from diverse scientists and engineers on breaking barriers, fostering inclusivity, and paving the way for a more equitable future in the fields of science and engineering. This engaging event will feature interactive discussions, personal stories, and valuable insights that aim to inspire and empower attendees of all backgrounds to embark on their own journeys in STEM. Save the date and stay tuned for more details on how you can participate and make a difference in shaping a more diverse and inclusive scientific community!", + "event_type": "virtual", + "start_time": "2026-08-16 15:15:00", + "end_time": "2026-08-16 18:15:00", + "tags": [ + "Engineering", + "Education", + "LGBTQ", + "CommunityOutreach", + "Volunteerism", + "Science", + "STEM" + ] + }, + { + "id": "37e56ed7-6ab2-4340-8670-b15ac92fb5d3", + "club_id": "9d515217-c60e-4a7c-b431-5429371b9d84", + "name": "Event for Alpha Chi Omega", + "preview": "This club is holding an event.", + "description": "Join us at Alpha Chi Omega's Annual Sisterhood Retreat where members gather for a weekend of unforgettable memories and bonding. This retreat offers a perfect opportunity to strengthen friendships, learn valuable leadership skills, and engage in meaningful service projects together. From fun team-building activities to heartfelt discussions, this event creates a supportive and welcoming environment for all members to grow and thrive. Come be a part of this special tradition that embodies the essence of our fraternity's dedication to fostering lifelong connections and personal development.", + "event_type": "virtual", + "start_time": "2026-01-04 22:00:00", + "end_time": "2026-01-05 02:00:00", + "tags": [ + "CommunityOutreach", + "Leadership", + "Volunteerism", + "Friendship", + "Service" + ] + }, + { + "id": "d89f231c-70cc-4f7a-9728-4c116add8c6e", + "club_id": "9d515217-c60e-4a7c-b431-5429371b9d84", + "name": "Event for Alpha Chi Omega", + "preview": "This club is holding an event.", + "description": "Join us at Alpha Chi Omega's Charity Gala to celebrate and support our philanthropic endeavors! This glamorous evening will feature a live auction, gourmet dining, and lively music, all in the spirit of giving back to our community. Whether you're a long-time supporter or new to the Greek life scene, come mingle with our members and learn how you can make a difference in the world while having a fabulous time. Get ready to dress to impress and dance the night away with us! We can't wait to welcome you with open arms and show you the heartwarming impact Alpha Chi Omega has on the lives of others.", + "event_type": "virtual", + "start_time": "2026-12-06 19:15:00", + "end_time": "2026-12-06 23:15:00", + "tags": [ + "Leadership", + "Volunteerism", + "CommunityOutreach" + ] + }, + { + "id": "712ce445-6a16-4b47-b186-43334793e130", + "club_id": "9d515217-c60e-4a7c-b431-5429371b9d84", + "name": "Event for Alpha Chi Omega", + "preview": "This club is holding an event.", + "description": "Join Alpha Chi Omega for a delightful evening of sisterhood and community service at our annual Charity Gala event. Mingle with fellow members and guests in an atmosphere of friendship and camaraderie, all while supporting a meaningful cause. Enjoy inspiring speeches, exciting raffle prizes, and a gourmet dinner prepared by renowned chefs. This event is a perfect opportunity to experience the spirit of our fraternity, where bonds are strengthened and hearts are uplifted. Come be a part of an unforgettable evening that embodies our commitment to leadership, service, and lifelong learning.", + "event_type": "in_person", + "start_time": "2024-06-27 15:15:00", + "end_time": "2024-06-27 16:15:00", + "tags": [ + "Friendship", + "CommunityOutreach", + "Volunteerism", + "Service" + ] + }, + { + "id": "57bfb30c-c564-4d4c-8c46-fc89e26e7089", + "club_id": "28b189aa-b93d-4e90-abad-c4bc9e227978", + "name": "Event for Alpha Epsilon Delta, The National Health Preprofessional Honor Society", + "preview": "This club is holding an event.", + "description": "Join Alpha Epsilon Delta for an engaging and educational workshop on Pre-Health Career Paths! Whether you're on the pre-med, pre-PA, or any other health preprofessional track, this event is designed to provide valuable insights and guidance for your future aspirations. Our guest speakers, comprised of healthcare professionals and alumni, will share their experiences and offer advice on navigating the journey towards a successful career in the health industry. You'll have the opportunity to participate in interactive discussions, ask questions, and connect with like-minded peers who share your passion for the healthcare field. Don't miss this chance to gain valuable knowledge and network with fellow students interested in pursuing a rewarding career in healthcare!", + "event_type": "hybrid", + "start_time": "2026-09-24 22:15:00", + "end_time": "2026-09-25 00:15:00", + "tags": [ + "Volunteerism", + "CommunityOutreach", + "Research", + "Chemistry", + "Biology", + "Healthcare", + "Physics" + ] + }, + { + "id": "75f6a63a-2315-4b87-90e3-2267098a5f5c", + "club_id": "45ac612d-0d8d-49b8-9189-aeb0e77f47e0", + "name": "Event for Alpha Epsilon Phi", + "preview": "This club is holding an event.", + "description": "Join us at Alpha Epsilon Phi's annual Sisterhood BBQ where members and prospective sisters come together to celebrate friendship and sisterhood. Enjoy an afternoon filled with delicious food, fun games, and heartfelt conversations as we bond over shared values and experiences. This event provides a perfect opportunity to meet new friends, learn more about our sorority's values, and be a part of our welcoming community that fosters personal growth and support. Whether you're a current member or thinking of joining, the Sisterhood BBQ is the perfect way to connect with like-minded women and create lasting memories in a warm and inclusive environment.", + "event_type": "virtual", + "start_time": "2026-04-16 23:15:00", + "end_time": "2026-04-17 02:15:00", + "tags": [ + "CommunityOutreach" + ] + }, + { + "id": "5e3c6a12-d6e4-4efd-b06e-3193932f66da", + "club_id": "909905ff-45b5-4125-b8c9-25cc68e50511", + "name": "Event for Alpha Epsilon Pi", + "preview": "This club is holding an event.", + "description": "Join Alpha Epsilon Pi for our annual Big Brother Night event, where new members will have the opportunity to connect with a seasoned brother for guidance, friendship, and support throughout their college journey. This fun-filled evening includes icebreakers, games, and meaningful conversations aimed at fostering lasting relationships and personal growth. Whether you're a freshman looking to navigate your first year or a senior seeking mentorship, this event is a welcoming space to build connections that will enhance your college experience. Don't miss out on this chance to be a part of our diverse brotherhood that values community, camaraderie, and individual growth!", + "event_type": "virtual", + "start_time": "2026-12-22 14:30:00", + "end_time": "2026-12-22 16:30:00", + "tags": [ + "Mentorship", + "ProfessionalGrowth", + "Judaism" + ] + }, + { + "id": "57d2eb7e-b2cd-45f1-8a74-32cd36f0e976", + "club_id": "fb7664a0-2eaf-4fa8-889c-77910f265e29", + "name": "Event for Alpha Kappa Alpha Sorority, Inc - Iota Gamma Chapter", + "preview": "This club is holding an event.", + "description": "Join the sisters of Alpha Kappa Alpha Sorority, Inc - Iota Gamma Chapter for a dynamic and uplifting event celebrating sisterhood, service, and empowerment. Immerse yourself in a vibrant atmosphere where you can connect with like-minded individuals, participate in engaging discussions, and contribute to impactful community initiatives. This event is a wonderful opportunity to learn more about our rich history, innovative programs, and ongoing commitment to making a difference in the world. Whether you're a current member, prospective member, or simply curious about our organization, all are welcome to join us for an inspiring and meaningful experience!", + "event_type": "hybrid", + "start_time": "2025-06-24 16:15:00", + "end_time": "2025-06-24 18:15:00", + "tags": [ + "AfricanAmerican", + "Volunteerism" + ] + }, + { + "id": "899d0761-f7f9-4c45-a8eb-555832323a65", + "club_id": "fb7664a0-2eaf-4fa8-889c-77910f265e29", + "name": "Event for Alpha Kappa Alpha Sorority, Inc - Iota Gamma Chapter", + "preview": "This club is holding an event.", + "description": "Join the Alpha Kappa Alpha Sorority, Inc - Iota Gamma Chapter for an empowering and enlightening community event showcasing the legacy of service and sisterhood that defines our organization. Dive into a celebration of our rich history, from our founding at Howard University in 1908 to our impactful influence across borders and generations. Connect with like-minded individuals, engage in thoughtful discussions on important societal issues, and discover how you can make a meaningful difference in the world. All are welcome to participate in this inspiring gathering of individuals committed to fostering positive change and sisterly bonds.", + "event_type": "hybrid", + "start_time": "2026-02-16 21:30:00", + "end_time": "2026-02-17 00:30:00", + "tags": [ + "PublicRelations", + "AfricanAmerican", + "HumanRights", + "CommunityOutreach", + "Volunteerism" + ] + }, + { + "id": "c1988f52-0557-4abd-b8cb-e5d01fc154f7", + "club_id": "fb7664a0-2eaf-4fa8-889c-77910f265e29", + "name": "Event for Alpha Kappa Alpha Sorority, Inc - Iota Gamma Chapter", + "preview": "This club is holding an event.", + "description": "Join the Alpha Kappa Alpha Sorority, Inc - Iota Gamma Chapter for a captivating evening celebrating sisterhood, service, and empowerment. Explore the rich history and impactful legacy of this esteemed organization while connecting with like-minded individuals committed to making a difference in their communities. Engage in enlightening discussions, partake in meaningful activities, and experience firsthand the spirit of unity and progress that defines Alpha Kappa Alpha. Whether you are a longtime member or a newcomer eager to learn more, this event promises to be a source of inspiration and camaraderie for all who attend.", + "event_type": "in_person", + "start_time": "2025-02-19 17:15:00", + "end_time": "2025-02-19 20:15:00", + "tags": [ + "HumanRights", + "PublicRelations", + "Volunteerism" + ] + }, + { + "id": "f3ad0c06-1ad8-4977-9f5e-e8367e51185d", + "club_id": "e445d34e-5913-4d9f-a1a9-048c0bdf4c55", + "name": "Event for Alpha Kappa Psi", + "preview": "This club is holding an event.", + "description": "Join Alpha Kappa Psi for an exciting networking mixer event designed to connect aspiring business professionals in a welcoming and inclusive environment. This event offers a unique opportunity to broaden your professional circle, exchange ideas, and gain valuable insights from seasoned industry leaders. Whether you are a seasoned entrepreneur or a newcomer to the business world, this event is the perfect platform to learn, grow, and collaborate with like-minded individuals. Come network, share experiences, and explore new opportunities with Alpha Kappa Psi!", + "event_type": "in_person", + "start_time": "2024-01-23 16:15:00", + "end_time": "2024-01-23 20:15:00", + "tags": [ + "Ethics" + ] + }, + { + "id": "ff702a84-058c-490a-bdd6-8648e260a545", + "club_id": "e445d34e-5913-4d9f-a1a9-048c0bdf4c55", + "name": "Event for Alpha Kappa Psi", + "preview": "This club is holding an event.", + "description": "Join Alpha Kappa Psi for 'Career Connections Night' - an exciting evening of networking and professional development! This event will feature inspiring guest speakers from various industries sharing their career journeys and insights. Connect with like-minded individuals, gain valuable knowledge, and expand your professional circle. Whether you're a seasoned professional or just starting out, this event is perfect for making meaningful connections and exploring new opportunities. Don't miss out on this enriching experience to further your career goals and aspirations!", + "event_type": "hybrid", + "start_time": "2024-01-18 16:30:00", + "end_time": "2024-01-18 17:30:00", + "tags": [ + "CommunityOutreach", + "Leadership", + "Business", + "Ethics" + ] + }, + { + "id": "c7c35cda-aeeb-4caf-b546-7a76166a435f", + "club_id": "e445d34e-5913-4d9f-a1a9-048c0bdf4c55", + "name": "Event for Alpha Kappa Psi", + "preview": "This club is holding an event.", + "description": "Join Alpha Kappa Psi's upcoming networking reception and seminar where you'll have the chance to connect with like-minded individuals passionate about business! Engage in lively discussions, gain insights from industry experts, and expand your professional network in a welcoming and supportive environment. Whether you're a seasoned professional or just starting your journey, this event is perfect for anyone looking to enhance their career prospects and build valuable relationships. Be sure to RSVP to secure your spot and embark on an evening filled with inspiration, growth, and new opportunities!", + "event_type": "in_person", + "start_time": "2026-11-27 12:30:00", + "end_time": "2026-11-27 16:30:00", + "tags": [ + "CommunityOutreach", + "Ethics", + "Business", + "Leadership", + "ProfessionalDevelopment" + ] + }, + { + "id": "5a9b133f-2da2-480e-909c-bce994cba2a3", + "club_id": "e644bf85-f499-4441-a7b6-aaf113353885", + "name": "Event for Alpha Kappa Sigma", + "preview": "This club is holding an event.", + "description": "Join us at our Fall Rush Mixer event hosted by Alpha Kappa Sigma, a local fraternity at Northeastern since 1919. Come meet our vibrant brotherhood, learn about our values of personal and professional growth, and discover the enriching experiences we offer. Whether you're interested in networking, forming lasting friendships, or simply having a great time, our event promises a warm welcome and a fun atmosphere. Don't miss this opportunity to connect with like-minded individuals and find out what makes Alpha Kappa Sigma truly special!", + "event_type": "hybrid", + "start_time": "2024-05-19 14:00:00", + "end_time": "2024-05-19 17:00:00", + "tags": [ + "Brotherhood" + ] + }, + { + "id": "ea72f6b2-df12-4301-95bf-f425aa61b7df", + "club_id": "3bb5894d-9a20-4fef-b9e4-245c1c65d52f", + "name": "Event for Alpha Phi Omega", + "preview": "This club is holding an event.", + "description": "Join Alpha Phi Omega (APO) for our upcoming community service event at the local food bank, where we will be sorting and packaging food items for families in need. This event is a great opportunity to make a meaningful impact while connecting with fellow members who share a passion for service and leadership. Whether you're a new volunteer or a seasoned member, all are welcome to join us in giving back to the community and fostering a sense of camaraderie. Together, we can make a difference and embody the values of friendship, service, and inclusivity that define Alpha Phi Omega.", + "event_type": "hybrid", + "start_time": "2026-11-12 17:15:00", + "end_time": "2026-11-12 21:15:00", + "tags": [ + "HumanRights" + ] + }, + { + "id": "2fd75091-7906-46b4-b263-168d782ba850", + "club_id": "3bb5894d-9a20-4fef-b9e4-245c1c65d52f", + "name": "Event for Alpha Phi Omega", + "preview": "This club is holding an event.", + "description": "Join Alpha Phi Omega for our upcoming community service event at Community Servings, where we will come together to prepare and deliver nutritious meals to individuals in need in the Boston area. This event is a great opportunity to make a meaningful impact on our community while building connections with like-minded individuals who share a passion for service and giving back. Whether you're a seasoned volunteer or new to community service, all are welcome to participate in this rewarding experience. Come join us in spreading kindness and making a difference in the lives of others!", + "event_type": "virtual", + "start_time": "2025-06-06 16:30:00", + "end_time": "2025-06-06 18:30:00", + "tags": [ + "Service", + "Leadership" + ] + }, + { + "id": "133a2f5a-e708-439e-bc64-4c8f07e5a60a", + "club_id": "3bb5894d-9a20-4fef-b9e4-245c1c65d52f", + "name": "Event for Alpha Phi Omega", + "preview": "This club is holding an event.", + "description": "Join Alpha Phi Omega for a fun and engaging volunteering event at the local Community Servings where we will come together to support those in need. This event will not only provide you with the opportunity to give back to the community but also help you develop your leadership skills in a friendly and inclusive environment. Come join us for a rewarding experience that promotes friendship, service, and making a positive impact in our beloved Boston community!", + "event_type": "hybrid", + "start_time": "2025-03-11 18:15:00", + "end_time": "2025-03-11 20:15:00", + "tags": [ + "Volunteerism" + ] + }, + { + "id": "7cb1144e-27e3-44cd-97e8-e58e9b905f42", + "club_id": "c6b5da00-6a21-4aca-bc6d-da4f65c40ce0", + "name": "Event for American Academy of Orthopedic Manual Physical Therapists Student Special Interest Group", + "preview": "This club is holding an event.", + "description": "Join us for a hands-on workshop on manual therapy techniques! This interactive event is designed to help students enhance their skills in orthopedic manual physical therapy, guided by experienced professionals in the field. Whether you're a beginner or looking to refine your techniques, this workshop offers a friendly and supportive environment to practice and learn. Don't miss this opportunity to deepen your understanding of manual therapy and connect with like-minded peers passionate about the art of healing through touch.", + "event_type": "in_person", + "start_time": "2024-02-17 19:15:00", + "end_time": "2024-02-17 21:15:00", + "tags": [ + "Healthcare", + "Education" + ] + }, + { + "id": "2aac7170-09a6-47c0-b2cb-7202cc8410c0", + "club_id": "c6b5da00-6a21-4aca-bc6d-da4f65c40ce0", + "name": "Event for American Academy of Orthopedic Manual Physical Therapists Student Special Interest Group", + "preview": "This club is holding an event.", + "description": "Join us at the American Academy of Orthopedic Manual Physical Therapists Student Special Interest Group event as we explore the fascinating world of orthopedic manual physical therapy. Dive into hands-on workshops guided by expert therapists to refine your manual therapy skills and engage in enlightening discussions on the latest research in the field. Whether you're just beginning your journey in manual therapy or looking to enhance your knowledge, this event is designed to empower students with the tools and resources needed to excel in their education and future careers. Come be a part of our supportive and collaborative community dedicated to promoting excellence in orthopedic manual physical therapy!", + "event_type": "hybrid", + "start_time": "2024-01-24 12:00:00", + "end_time": "2024-01-24 13:00:00", + "tags": [ + "Education", + "StudentOrganization" + ] + }, + { + "id": "12dd109a-ef59-443d-bae4-38fc838daa2e", + "club_id": "c6b5da00-6a21-4aca-bc6d-da4f65c40ce0", + "name": "Event for American Academy of Orthopedic Manual Physical Therapists Student Special Interest Group", + "preview": "This club is holding an event.", + "description": "Join the American Academy of Orthopedic Manual Physical Therapists Student Special Interest Group for an interactive workshop on advanced manual therapy techniques. Dive deep into hands-on learning experiences that will expand your skills and understanding of orthopedic manual physical therapy. Whether you're a seasoned student or new to the field, this event is designed to cater to all levels of expertise. Network with like-minded peers, receive valuable mentorship from experienced professionals, and gain insights that will bolster your preparation for clinical rotations and your future in manual therapy. Don't miss this opportunity to elevate your practice and connect with a community dedicated to supporting your growth and success!", + "event_type": "in_person", + "start_time": "2025-02-22 23:15:00", + "end_time": "2025-02-23 02:15:00", + "tags": [ + "Healthcare", + "PhysicalTherapy", + "StudentOrganization", + "Education", + "EvidenceBasedPractice" + ] + }, + { + "id": "f1a86d24-3354-4cd1-a729-56a53b5474a9", + "club_id": "9eb69717-b377-45ee-aad5-848c1ed296d8", + "name": "Event for American Cancer Society On Campus at Northeastern University", + "preview": "This club is holding an event.", + "description": "Join us at the annual Paint the Campus Purple event, where we come together as a community to raise awareness and show support for cancer patients and their families. You'll have the opportunity to get creative with purple paint, share stories of strength and hope, and learn about the impact we can make together in the fight against cancer. Whether you're a survivor, a caregiver, a student, or a supporter, everyone is welcome to join in this uplifting and empowering event full of love and unity.", + "event_type": "in_person", + "start_time": "2025-10-11 22:00:00", + "end_time": "2025-10-12 00:00:00", + "tags": [ + "Education", + "Survivorship", + "EnvironmentalAdvocacy", + "Volunteerism", + "CommunityOutreach", + "PublicRelations", + "Advocacy" + ] + }, + { + "id": "8d8635ef-8015-4076-8c16-523ce60098e9", + "club_id": "04ad720a-5d34-4bb1-82bf-03bcbb2d660f", + "name": "Event for American College of Clinical Pharmacy Student Chapter of Northeastern University", + "preview": "This club is holding an event.", + "description": "Join us for an exciting evening of learning and networking at our Clinical Pharmacy Career Panel Event! Discover the diverse specialties within clinical pharmacy and gain insights from experienced professionals in the field. Whether you're interested in ambulatory care, infectious diseases, or academia, this event is your chance to explore the vast opportunities available to you as a future clinical pharmacist. Engage in interactive discussions, ask questions, and connect with fellow student pharmacists who share your passion for advancing human health through pharmacy practice. Don't miss this valuable opportunity to expand your knowledge, build connections, and kickstart your journey towards becoming a skilled clinical pharmacy expert!", + "event_type": "virtual", + "start_time": "2026-01-15 23:15:00", + "end_time": "2026-01-16 03:15:00", + "tags": [ + "Pharmacotherapy", + "Chemistry", + "ClinicalPharmacy", + "StudentChapter", + "Biology", + "Research" + ] + }, + { + "id": "8cbc2679-cfba-4ece-bb1d-a87be72bcf1b", + "club_id": "04ad720a-5d34-4bb1-82bf-03bcbb2d660f", + "name": "Event for American College of Clinical Pharmacy Student Chapter of Northeastern University", + "preview": "This club is holding an event.", + "description": "Join us for an engaging and interactive workshop hosted by the American College of Clinical Pharmacy Student Chapter of Northeastern University! Dive into the world of clinical pharmacy as we explore different specialties and career paths available to pharmacy students. Learn from seasoned professionals in the field, network with like-minded peers, and discover exciting opportunities for your future as a clinical pharmacist. Whether you're a seasoned student pharmacist or just starting your journey in pharmacy education, this event is the perfect place to gain valuable insights, build connections, and set yourself up for success in the dynamic and rewarding field of clinical pharmacy.", + "event_type": "hybrid", + "start_time": "2024-12-01 17:30:00", + "end_time": "2024-12-01 19:30:00", + "tags": [ + "Pharmacotherapy", + "Chemistry", + "Biology", + "Research", + "ClinicalPharmacy" + ] + }, + { + "id": "af29d32b-dff6-4658-8aa4-8bda654c5b92", + "club_id": "eaffd96d-f678-4c2e-8ca7-842c8e34d30b", + "name": "Event for American Institute of Architecture Students", + "preview": "This club is holding an event.", + "description": "Join the American Institute of Architecture Students for an exciting firm crawl event, where you can explore the local architecture firms in Boston and Cambridge to gain valuable insights into firm culture and expectations. Connect with industry professionals, network with fellow students, and discover the realities of working in the field. Don't miss this opportunity to expand your knowledge and make meaningful connections in the world of architecture!", + "event_type": "hybrid", + "start_time": "2024-04-23 22:30:00", + "end_time": "2024-04-24 00:30:00", + "tags": [ + "Architecture", + "Mentorship" + ] + }, + { + "id": "7858e0d3-d70c-41de-9d7c-0b1a4eebf21e", + "club_id": "eaffd96d-f678-4c2e-8ca7-842c8e34d30b", + "name": "Event for American Institute of Architecture Students", + "preview": "This club is holding an event.", + "description": "Join the American Institute of Architecture Students (AIAS) for an evening of inspiration and connection at our upcoming Firm Crawl event in Boston and Cambridge! This unique opportunity allows students to step into the world of local architectural firms, gaining valuable insights into firm culture and expectations. Meet industry professionals, make new connections, and explore the exciting realities of the architecture field. Whether you're a seasoned architecture enthusiast or just starting out in the program, this event promises to be a rewarding and engaging experience that you won't want to miss!", + "event_type": "in_person", + "start_time": "2026-07-10 16:15:00", + "end_time": "2026-07-10 20:15:00", + "tags": [ + "Mentorship" + ] + }, + { + "id": "c932e512-82ed-416a-b05e-ce606d14c4ae", + "club_id": "932ef793-9174-4f7c-a9ed-f8ec0c609589", + "name": "Event for American Institute of Chemical Engineers of Northeastern University", + "preview": "This club is holding an event.", + "description": "Join us for an exciting and educational event hosted by the American Institute of Chemical Engineers of Northeastern University! Discover the fascinating world of Chemical Engineering through interactive student panels, engaging industry talks, insightful lab tours, and our annual ChemE Department BBQ. Immerse yourself in a community that fosters connections between Undergraduate students, Graduate students, and Professionals in the field. Learn about our innovative Chem-E-Car team, where students work on building an autonomous shoe box sized car powered by chemical reactions. Come be a part of an organization that not only promotes excellence in the Chemical Engineering profession, but also values good ethics, diversity, and lifelong development for all Chemical Engineers. Don't miss out on this unique opportunity to expand your knowledge and network with like-minded individuals!", + "event_type": "virtual", + "start_time": "2026-11-28 21:30:00", + "end_time": "2026-11-28 22:30:00", + "tags": [ + "STEM", + "CommunityOutreach", + "ChemicalEngineering" + ] + }, + { + "id": "ccb99a22-c9ed-4886-9df4-a7c180cfaa87", + "club_id": "932ef793-9174-4f7c-a9ed-f8ec0c609589", + "name": "Event for American Institute of Chemical Engineers of Northeastern University", + "preview": "This club is holding an event.", + "description": "Join us for an exciting evening hosted by the American Institute of Chemical Engineers of Northeastern University! This event will feature a captivating student panel discussing the latest trends in the Chemical Engineering field, followed by an engaging industry talk from seasoned professionals. You'll also have the opportunity to embark on a fascinating lab tour to get a glimpse of cutting-edge research in action. To top it off, we'll wrap up the night with our signature ChemE Department BBQ, where you can network with fellow attendees and enjoy delicious food in a vibrant atmosphere. Don't miss out on this opportunity to connect, learn, and have a great time with AIChE at Northeastern University!", + "event_type": "virtual", + "start_time": "2025-02-24 18:15:00", + "end_time": "2025-02-24 21:15:00", + "tags": [ + "StudentOrganization", + "CommunityOutreach", + "ChemicalEngineering" + ] + }, + { + "id": "447c521e-6329-43f5-8ffa-7168e609cd63", + "club_id": "932ef793-9174-4f7c-a9ed-f8ec0c609589", + "name": "Event for American Institute of Chemical Engineers of Northeastern University", + "preview": "This club is holding an event.", + "description": "Join us for an exciting night of networking and learning at our AIChE Student Panel event! Hear from a diverse group of Chemical Engineering professionals as they share their experiences and insights with our members. This is a great opportunity to connect with fellow undergraduate and graduate students, as well as industry experts, all while enjoying some delicious snacks and refreshments. Don't miss out on this chance to expand your knowledge and make meaningful connections in the world of Chemical Engineering!", + "event_type": "virtual", + "start_time": "2025-11-11 14:15:00", + "end_time": "2025-11-11 16:15:00", + "tags": [ + "STEM" + ] + }, + { + "id": "bfd3daf3-1444-4592-aa6a-3ff7090afe81", + "club_id": "ceb51c75-1fed-461e-94bd-fb2ae1cc5b96", + "name": "Event for American Society of Civil Engineers", + "preview": "This club is holding an event.", + "description": "Join us at the American Society of Civil Engineers (ASCE) for an exciting evening of networking and learning! Our upcoming event features a special presentation by a seasoned professional in the civil and environmental engineering industry. This is a fantastic opportunity to connect with like-minded individuals, gain valuable insights, and expand your knowledge in the field. Whether you're a student looking to kickstart your career or a seasoned professional seeking to stay updated on industry trends, this event is perfect for you. Don't miss out on this chance to engage with our vibrant community and take your civil engineering journey to the next level!", + "event_type": "hybrid", + "start_time": "2026-05-26 13:30:00", + "end_time": "2026-05-26 16:30:00", + "tags": [ + "CivilEngineering" + ] + }, + { + "id": "793c10ff-b9bd-4f52-b637-519eb1dfa242", + "club_id": "ceb51c75-1fed-461e-94bd-fb2ae1cc5b96", + "name": "Event for American Society of Civil Engineers", + "preview": "This club is holding an event.", + "description": "Join the American Society of Civil Engineers (ASCE) for an engaging and informative panel discussion featuring industry experts in civil and environmental engineering. Discover the latest trends and innovations in the field, network with like-minded professionals, and gain valuable insights to help you succeed in your career. This event is open to all students and professionals interested in advancing their knowledge and contributing to the future of civil engineering. Don't miss this opportunity to connect with the ASCE community and expand your horizons!", + "event_type": "hybrid", + "start_time": "2026-08-06 21:30:00", + "end_time": "2026-08-07 01:30:00", + "tags": [ + "EnvironmentalScience", + "CommunityOutreach" + ] + }, + { + "id": "c990cf25-22e8-4820-b79d-76c67bf2f400", + "club_id": "b671c4ca-fb48-4ffd-b9be-1c9a9cd657d0", + "name": "Event for American Society of Mechanical Engineers", + "preview": "This club is holding an event.", + "description": "Join us for an exciting evening with the American Society of Mechanical Engineers! Our upcoming event will feature a guest speaker from a leading engineering company who will share insider tips and trends in the industry. Get ready to network with fellow students and professionals, and learn about the latest advancements in technology and innovation. Don't miss this opportunity to expand your knowledge, connect with industry experts, and take your career to the next level with us!", + "event_type": "virtual", + "start_time": "2024-08-10 23:15:00", + "end_time": "2024-08-11 01:15:00", + "tags": [ + "MechanicalEngineering", + "Networking", + "ProfessionalDevelopment" + ] + }, + { + "id": "c8834b14-9365-4d2b-bbda-caa917c5ea91", + "club_id": "94d09445-715c-4618-9d59-de4d52e33bb3", + "name": "Event for Anime of NU", + "preview": "This club is holding an event.", + "description": "Join us this weekend at Anime of NU for a special event featuring a double-feature of heartwarming slice-of-life anime followed by thrilling action-packed episodes that will have you on the edge of your seat! We'll also be screening a seasonal movie that promises to tug at your heartstrings. As always, our club provides a welcoming and social atmosphere where you can share in the laughter and tears with fellow anime enthusiasts. Don't miss out on the fun - make sure to join our Discord server to stay updated and have a say in what shows we watch together!", + "event_type": "virtual", + "start_time": "2025-07-22 16:15:00", + "end_time": "2025-07-22 19:15:00", + "tags": [ + "AsianAmerican" + ] + }, + { + "id": "21462416-54e6-43e4-b2b5-234154822715", + "club_id": "4f13622f-446a-4f62-bfed-6a14de1ccf87", + "name": "Event for Arab Students Association at Northeastern University", + "preview": "This club is holding an event.", + "description": "Join the Arab Students Association at Northeastern University for our annual cultural celebration event where we come together to showcase the rich traditions, vibrant heritage, and diverse customs of the Arab world. Immerse yourself in a night filled with exquisite music, delicious food, and engaging activities that will allow you to experience the beauty and warmth of our culture. Whether you are of Arab descent or simply curious about exploring new perspectives, this event is a perfect opportunity to connect with like-minded individuals and expand your cultural horizons. Be part of a community that values inclusivity, mutual respect, and the sharing of knowledge as we celebrate our unique identities within the vibrant tapestry of Northeastern University.", + "event_type": "hybrid", + "start_time": "2025-08-06 17:30:00", + "end_time": "2025-08-06 19:30:00", + "tags": [ + "PublicRelations" + ] + }, + { + "id": "d7649c40-34ce-455b-8c44-def1173f47a6", + "club_id": "d507318e-7b37-4750-83c0-163ccd4ef946", + "name": "Event for Armenian Student Association at Northeastern University", + "preview": "This club is holding an event.", + "description": "Join the Armenian Student Association at Northeastern University for an exciting cultural exchange event showcasing the rich tapestry of Armenian heritage. Immerse yourself in the vibrant traditions of Armenia through engaging workshops on history, language lessons, traditional music performances, dynamic dance demonstrations, insightful discussions on current events, and a tantalizing feast of authentic Armenian cuisine. This event is open to all members of the University community, both Armenian and non-Armenian, providing a welcoming space to learn, connect, and celebrate together. Don't miss this opportunity to experience the beauty of Armenian culture firsthand! For more details or to express your interest, reach out to the E-Board at asa@northeastern.edu or connect with us on Instagram @asanortheastern.", + "event_type": "hybrid", + "start_time": "2024-11-23 13:30:00", + "end_time": "2024-11-23 15:30:00", + "tags": [ + "CommunityOutreach", + "Diversity", + "InternationalRelations" + ] + }, + { + "id": "3cdd5a23-11a9-4750-9a55-ee289e6f7ebe", + "club_id": "d507318e-7b37-4750-83c0-163ccd4ef946", + "name": "Event for Armenian Student Association at Northeastern University", + "preview": "This club is holding an event.", + "description": "Join us for an engaging cultural extravaganza hosted by the Armenian Student Association at Northeastern University! Immerse yourself in the rich tapestry of Armenian heritage through riveting presentations on history, language, and traditional music and dance performances. Sample delectable Armenian cuisine that will tantalize your taste buds. This event is open to all members of the University community, whether you're Armenian or simply curious about our vibrant culture. Come connect with like-minded individuals and expand your horizons with ASA \u2013 where diversity and inclusion thrive!", + "event_type": "virtual", + "start_time": "2026-11-15 19:15:00", + "end_time": "2026-11-15 20:15:00", + "tags": [ + "Food" + ] + }, + { + "id": "331a46cb-523d-4fe0-a020-050d2d1687cb", + "club_id": "d507318e-7b37-4750-83c0-163ccd4ef946", + "name": "Event for Armenian Student Association at Northeastern University", + "preview": "This club is holding an event.", + "description": "Join us for a night of cultural celebration at the Armenian Food and Music Festival hosted by the Armenian Student Association at Northeastern University! Immerse yourself in the rich flavors of Armenian cuisine while enjoying traditional music and dance performances. Whether you're Armenian or simply curious about the culture, this event is a fantastic opportunity to connect with the vibrant community at Northeastern. Bring your friends and experience the warmth and camaraderie that define our club. We can't wait to share our heritage with you!", + "event_type": "virtual", + "start_time": "2025-02-09 23:15:00", + "end_time": "2025-02-10 00:15:00", + "tags": [ + "ArmenianCulture", + "CommunityOutreach", + "Diversity" + ] + }, + { + "id": "f3594031-8725-4dd8-9333-65d52658a3f6", + "club_id": "36f7fa45-c26c-498a-8f63-f48464d97682", + "name": "Event for Art Blanche at NEU", + "preview": "This club is holding an event.", + "description": "Join us for an exciting life drawing session where we will delve into the world of figure studies! Our welcoming and friendly environment is perfect for both newcomers eager to learn and proficient artists looking to enhance their skills. Let's gather inspiration from a guided visit to the Museum of Fine Arts and engage in lively group discussions to spark creativity. Be part of our vibrant community at Art Blanche at NEU and showcase your artistic growth in our upcoming student exhibition!", + "event_type": "virtual", + "start_time": "2026-10-12 23:00:00", + "end_time": "2026-10-13 03:00:00", + "tags": [ + "CommunityOutreach" + ] + }, + { + "id": "aee4d3dc-a668-46f7-a2f1-235ec02ef08f", + "club_id": "88326fe6-1683-4bcc-b01e-4eed7b9ecbfe", + "name": "Event for Art4All", + "preview": "This club is holding an event.", + "description": "Join Art4All for a fun-filled afternoon celebrating young creators at our annual Student Art Showcase! This exciting event will feature a diverse display of artworks created by talented students from our mentoring programs. Come show your support for these budding artists as they confidently express their creativity and unique perspectives through their art pieces. Enjoy interactive art activities, live performances, and the opportunity to mingle with like-minded art enthusiasts. Bring your friends and family to share in the joy of artistic expression and community engagement. Together, we can foster a culture of accessibility, creativity, and education through the power of art!", + "event_type": "virtual", + "start_time": "2025-03-19 15:30:00", + "end_time": "2025-03-19 18:30:00", + "tags": [ + "HumanRights" + ] + }, + { + "id": "99931522-a473-4b65-ac24-12850b3c7c3f", + "club_id": "88326fe6-1683-4bcc-b01e-4eed7b9ecbfe", + "name": "Event for Art4All", + "preview": "This club is holding an event.", + "description": "Join Art4All at our upcoming virtual art showcase event, where students from diverse backgrounds will exhibit their creativity and talent! Experience a vibrant display of artworks that showcase the values of accessibility, creativity, and education that are at the core of Art4All's mission. Meet the young artists, engage in meaningful conversations, and support their artistic journey. This event is a celebration of community collaboration and the power of art to inspire and uplift. Don't miss this opportunity to connect with the next generation of creators and be a part of a movement that empowers students to express themselves through art!", + "event_type": "hybrid", + "start_time": "2026-03-28 21:15:00", + "end_time": "2026-03-29 01:15:00", + "tags": [ + "HumanRights", + "CreativeWriting" + ] + }, + { + "id": "ac01e957-a57a-4e61-9fc9-756bb22043e4", + "club_id": "462f3a2f-3b06-4059-9630-c399062f2378", + "name": "Event for Artificial Intelligence Club", + "preview": "This club is holding an event.", + "description": "Join us for an interactive workshop on AI ethics, where we'll explore the importance of responsible AI development and decision-making. Engage in lively discussions and practical case studies to deepen your understanding of the ethical considerations surrounding artificial intelligence. Whether you're a beginner or an expert, this event promises to provide valuable insights and perspectives on how we can collectively shape a more ethical and inclusive future through AI innovation. Don't miss this opportunity to contribute to the ongoing dialogue on ethical AI practices within a supportive and collaborative community!", + "event_type": "hybrid", + "start_time": "2025-11-23 20:00:00", + "end_time": "2025-11-23 22:00:00", + "tags": [ + "Technology", + "SoftwareEngineering", + "ArtificialIntelligence", + "DataScience" + ] + }, + { + "id": "84033953-5504-455b-8819-6fe191f88ccd", + "club_id": "80d516fa-748d-4400-9443-0e2b7849b03f", + "name": "Event for Artistry Magazine", + "preview": "This club is holding an event.", + "description": "Join Artistry Magazine for an evening of creativity and inspiration at our monthly Arts Mixer event! This relaxed gathering is the perfect opportunity for students of all artistic backgrounds to come together and connect over their shared love for art and culture. Share your latest projects, mingle with fellow creatives, and even get a chance to contribute to our upcoming issue. Whether you're a writer, photographer, designer, or simply someone who appreciates creative expression, we invite you to join us in fostering a vibrant art community here at Northeastern University and beyond. Come see what Artistry Magazine is all about and discover how you can be a part of our passionate team. See you there!", + "event_type": "hybrid", + "start_time": "2026-09-09 19:15:00", + "end_time": "2026-09-09 20:15:00", + "tags": [ + "Journalism" + ] + }, + { + "id": "e55fc6f9-57c8-4e64-aa99-42c5d36fe3ba", + "club_id": "80d516fa-748d-4400-9443-0e2b7849b03f", + "name": "Event for Artistry Magazine", + "preview": "This club is holding an event.", + "description": "Join Artistry Magazine for a night of creative inspiration at our Art Showcase event! Immerse yourself in a showcase of student artwork from various mediums celebrating the vibrant arts community at Northeastern University and beyond. Meet fellow art enthusiasts, connect with talented creators, and discover new perspectives through each brushstroke and photograph. Whether you're an experienced artist or simply appreciate the beauty of creativity, this event is open to all who share a passion for art and culture. Don't miss this opportunity to engage with the diverse artistry of our community \u2013 come and be inspired!", + "event_type": "hybrid", + "start_time": "2024-09-02 23:00:00", + "end_time": "2024-09-03 03:00:00", + "tags": [ + "CreativeWriting" + ] + }, + { + "id": "b77db462-b33d-49be-a95e-cdd7aaa3fbba", + "club_id": "80d516fa-748d-4400-9443-0e2b7849b03f", + "name": "Event for Artistry Magazine", + "preview": "This club is holding an event.", + "description": "Join us for an exciting evening of creativity and inspiration at Artistry Magazine's Art Showcase event! This vibrant gathering will feature a diverse selection of student artwork including paintings, photography, sculptures, and more. Meet fellow art enthusiasts, explore different artistic expressions, and immerse yourself in the vibrant culture of Northeastern's creative community. Whether you're an aspiring artist or simply appreciate the beauty of art, this event is the perfect opportunity to connect with like-minded individuals and discover the amazing talent within our midst. Don't miss out on this enriching experience - come join us at the Artistry Magazine Art Showcase!", + "event_type": "in_person", + "start_time": "2025-08-24 23:15:00", + "end_time": "2025-08-25 02:15:00", + "tags": [ + "Journalism" + ] + }, + { + "id": "8a0cc6b7-6a53-4a0a-a9ef-400d026b1d17", + "club_id": "2f0f69a5-0433-4d62-b02a-8081895e8f69", + "name": "Event for Asian American Center (Campus Resource)", + "preview": "This club is holding an event.", + "description": "Join the Asian American Center (Campus Resource) at Northeastern for an engaging cultural showcase celebrating the vibrant traditions and rich heritage of the Asian American community. Immerse yourself in a night of dynamic performances, interactive workshops, and thought-provoking discussions aimed at fostering a greater sense of unity and understanding. Whether you're a newcomer or a long-time member, this event promises to be a space where friendships are forged, stories are shared, and perspectives are expanded. Come and be part of this enriching experience that highlights the diversity and complexity of the Asian American experience, while empowering individuals to embrace their unique identities and contributions within the Northeastern University community.", + "event_type": "hybrid", + "start_time": "2025-04-20 19:00:00", + "end_time": "2025-04-20 20:00:00", + "tags": [ + "AsianAmerican", + "Soccer", + "Journalism", + "HumanRights", + "CommunityOutreach" + ] + }, + { + "id": "185bccae-4453-473d-bdba-b463ced8e504", + "club_id": "4c8fe4dd-d1df-46b0-a317-3b11dbde5f62", + "name": "Event for Asian Pacific American Law Student Association", + "preview": "This club is holding an event.", + "description": "Join the Asian Pacific American Law Student Association for an engaging Cultural Mixer Night! This event is open to all students and promises an evening of fun, networking, and cultural exchange. Discover the rich diversity within the AAPI community as we come together to celebrate our traditions, stories, and experiences. Don't miss this opportunity to connect with fellow law students, expand your cultural horizons, and build lasting friendships. Mark your calendars and get ready for an unforgettable evening of unity and inclusivity!", + "event_type": "virtual", + "start_time": "2024-08-14 16:30:00", + "end_time": "2024-08-14 19:30:00", + "tags": [ + "HumanRights", + "Volunteerism", + "AsianAmerican" + ] + }, + { + "id": "07d2b103-924f-405a-829e-4997acc5e2f9", + "club_id": "4c8fe4dd-d1df-46b0-a317-3b11dbde5f62", + "name": "Event for Asian Pacific American Law Student Association", + "preview": "This club is holding an event.", + "description": "Join the Asian Pacific American Law Student Association for an enriching panel discussion on the unique perspectives within the AAPI community in the legal field. Hear from successful AAPI attorneys, judges, and law professors as they share their experiences and insights. This event is open to all students who are curious about the diverse stories and achievements of AAPI legal professionals. Engage in meaningful conversations, expand your network, and gain valuable knowledge to inspire your own legal journey. Save the date and be part of this inclusive and empowering gathering!", + "event_type": "hybrid", + "start_time": "2025-11-12 22:00:00", + "end_time": "2025-11-12 23:00:00", + "tags": [ + "Volunteerism" + ] + }, + { + "id": "b1b347bb-f0d2-4752-9994-949c8cc997ca", + "club_id": "6639903c-fc70-4c60-b7dc-7362687f1fcc", + "name": "Event for Asian Student Union", + "preview": "This club is holding an event.", + "description": "Join the Asian Student Union for a fun and educational Lunar New Year celebration! Immerse yourself in the rich traditions and vibrant culture of the Asian American community at Northeastern University. Engage in interactive activities, delicious food tasting, and performances that showcase the diversity and unity within our group. Whether you're a prospective student looking to learn more about the Asian American experience or a current member seeking to connect with like-minded individuals, this event is the perfect opportunity to celebrate the spirit and heritage of the Asian American community. Come join us in spreading joy and cultural appreciation!", + "event_type": "in_person", + "start_time": "2024-12-18 13:00:00", + "end_time": "2024-12-18 17:00:00", + "tags": [ + "AsianAmerican", + "CommunityOutreach" + ] + }, + { + "id": "0342ae3b-0b11-4f70-a308-7b48aeebf71f", + "club_id": "6639903c-fc70-4c60-b7dc-7362687f1fcc", + "name": "Event for Asian Student Union", + "preview": "This club is holding an event.", + "description": "Join the Asian Student Union for a night of cultural celebration and connection! Our event, 'Asian Heritage Night', will showcase the rich diversity and traditions of Asian American students at Northeastern University and beyond. Experience engaging performances, interactive workshops, and tasty food that reflect the vibrant spirit of our community. Whether you're new to the Asian American experience or a seasoned veteran, this event promises to be a meaningful gathering that fosters unity and understanding. Don't miss out on this opportunity to immerse yourself in the beauty of Asian culture and connect with like-minded peers. See you there!", + "event_type": "in_person", + "start_time": "2025-04-26 14:15:00", + "end_time": "2025-04-26 18:15:00", + "tags": [ + "CommunityOutreach", + "Volunteerism", + "CulturalAdvising", + "AsianAmerican" + ] + }, + { + "id": "ada884c9-bb9b-4d76-95c5-e21b982c5f31", + "club_id": "1efe34c1-0407-4194-ab48-a502027b82ee", + "name": "Event for ASLA Adapt", + "preview": "This club is holding an event.", + "description": "Join ASLA Adapt for an engaging workshop on sustainable urban planning techniques and the role of landscape architecture in creating resilient cities. This interactive session will provide valuable insights into the intersection of design, ecology, and environmental science. Whether you're a landscape architecture enthusiast or simply curious about our ever-changing world, this event is open to all majors and interests. Come network with like-minded individuals, learn from industry professionals, and gain practical knowledge that can inspire your own contributions to creating greener, more sustainable communities.", + "event_type": "in_person", + "start_time": "2024-04-28 15:15:00", + "end_time": "2024-04-28 19:15:00", + "tags": [ + "Networking", + "EnvironmentalScience", + "UrbanPlanning", + "Ecology" + ] + }, + { + "id": "f1c6fa3c-b68d-4810-a4db-95ec3d3d70d7", + "club_id": "1efe34c1-0407-4194-ab48-a502027b82ee", + "name": "Event for ASLA Adapt", + "preview": "This club is holding an event.", + "description": "Join ASLA Adapt for an engaging virtual workshop where we will delve into the intricate world of sustainable urban landscape design! Learn from industry professionals about the latest trends, techniques, and practices shaping the future of landscape architecture. Whether you're already a seasoned pro or just curious about the field, this event promises to inspire, educate, and connect like-minded individuals passionate about creating a greener, more resilient world through innovative design solutions. Mark your calendar and come ready to explore the intersection of art, science, and nature in urban environments with us!", + "event_type": "in_person", + "start_time": "2026-06-20 20:15:00", + "end_time": "2026-06-20 23:15:00", + "tags": [ + "Networking", + "Ecology", + "ClimateAction", + "UrbanPlanning" + ] + }, + { + "id": "21972bcf-7ac9-41cf-ae97-6f6409b310cb", + "club_id": "1efe34c1-0407-4194-ab48-a502027b82ee", + "name": "Event for ASLA Adapt", + "preview": "This club is holding an event.", + "description": "Join ASLA Adapt for an engaging evening discussing the role of landscape architecture in promoting environmental sustainability and social equity. Learn about our current initiatives to advance our field, connect with like-minded students and professionals, and discover how you can contribute to creating more resilient and inclusive urban landscapes. Whether you're a seasoned landscape enthusiast or just curious about the impact of design on our communities, this event is open to all who are passionate about transforming our world through innovative and thoughtful practices. Come share your ideas, ask questions, and be inspired by the possibilities of shaping a greener, more vibrant future together!", + "event_type": "hybrid", + "start_time": "2026-04-06 15:30:00", + "end_time": "2026-04-06 17:30:00", + "tags": [ + "Networking", + "UrbanPlanning", + "ClimateAction", + "EnvironmentalScience" + ] + }, + { + "id": "ada6d688-be76-4620-afe8-c4c3d840e642", + "club_id": "99056e3a-ef6e-4af9-8d46-6ecfa2133c63", + "name": "Event for Aspiring Product Managers Club", + "preview": "This club is holding an event.", + "description": "Join us at the Aspiring Product Managers Club's upcoming Meetup event - a casual and engaging gathering where you can network with other aspiring product managers and industry professionals. Learn the latest trends in Product Management, share your experiences, and gain valuable insights to help you on your journey to becoming a successful product manager. Whether you're new to the field or looking to enhance your skills, this event is the perfect opportunity to connect, learn, and grow together in a welcoming and supportive environment. Don't miss out on this exciting opportunity to be a part of our thriving community of product management enthusiasts!", + "event_type": "virtual", + "start_time": "2024-01-28 20:00:00", + "end_time": "2024-01-28 21:00:00", + "tags": [ + "SoftwareEngineering", + "DataScience", + "SpeakerSeries", + "Networking", + "ProductManagement" + ] + }, + { + "id": "a0459143-a3b3-442c-ad05-e054de092ea0", + "club_id": "99056e3a-ef6e-4af9-8d46-6ecfa2133c63", + "name": "Event for Aspiring Product Managers Club", + "preview": "This club is holding an event.", + "description": "Join us for an exciting and interactive workshop on 'Agile Product Development Techniques' where you'll learn essential strategies and tools used by successful product managers. This hands-on session will provide valuable insights and practical skills to help you excel in the fast-paced world of product management. Whether you're a beginner or already working towards your product management career, this workshop is designed to inspire and empower you on your journey. Don't miss out on this opportunity to connect with fellow aspiring product managers and dive deeper into the exciting realm of product development!", + "event_type": "virtual", + "start_time": "2024-05-12 18:00:00", + "end_time": "2024-05-12 21:00:00", + "tags": [ + "SoftwareEngineering", + "SpeakerSeries" + ] + }, + { + "id": "d41533ba-2e48-4e51-a42a-d59cca295848", + "club_id": "090c4686-d0a8-40ea-ab9d-417858cec69f", + "name": "Event for Association of Latino Professionals for America", + "preview": "This club is holding an event.", + "description": "Join us at ALPFA's annual networking mixer where you can connect with vibrant professionals and passionate students in the Latino business community. This event provides a unique opportunity to build meaningful relationships, exchange ideas, and explore potential career opportunities. Whether you are a seasoned professional or a budding student eager to kickstart your career, our networking mixer offers a welcoming environment where you can engage in enriching conversations and expand your professional network. Don't miss out on this exciting event where you can foster new connections and be inspired by the diverse talents within our ALPFA family!", + "event_type": "hybrid", + "start_time": "2026-02-22 15:30:00", + "end_time": "2026-02-22 17:30:00", + "tags": [ + "Networking", + "LeadershipTraining", + "ProfessionalDevelopment" + ] + }, + { + "id": "d7b97e9d-86f3-43fb-bc86-ae45f80b2cc3", + "club_id": "090c4686-d0a8-40ea-ab9d-417858cec69f", + "name": "Event for Association of Latino Professionals for America", + "preview": "This club is holding an event.", + "description": "Join ALPFA for an exciting and insightful networking event where you can connect with like-minded professionals and students in the Latino community. This event will feature engaging discussions, workshops, and opportunities to meet decision-makers from Fortune 1000 partners and corporate members. Whether you're a college student looking to kickstart your career or a seasoned professional seeking new challenges, this event is the perfect platform to build meaningful relationships, gain valuable mentorship, and discover diverse opportunities for growth and success. Don't miss out on this chance to be part of a vibrant and supportive community dedicated to empowering diverse leaders through professional development and career advancement!", + "event_type": "in_person", + "start_time": "2024-04-14 20:30:00", + "end_time": "2024-04-14 21:30:00", + "tags": [ + "LeadershipTraining", + "ProfessionalDevelopment", + "CommunityOutreach", + "Networking" + ] + }, + { + "id": "9ea2c798-502f-4b35-8593-ed1f19509916", + "club_id": "090c4686-d0a8-40ea-ab9d-417858cec69f", + "name": "Event for Association of Latino Professionals for America", + "preview": "This club is holding an event.", + "description": "Join the Association of Latino Professionals for America for a dynamic networking event focused on empowering the growth of diverse leaders in the business world. Connect with like-minded professionals and students, engage with Fortune 1000 partners, and gain valuable insights and opportunities for career development. Whether you're a college student looking to kickstart your career or a seasoned professional seeking new connections, this event is the perfect platform to expand your network, enhance your skills, and make a lasting impact in the community. Be part of a vibrant community that fosters mentorship, leadership training, job placement, and volunteerism, all aimed at preparing you for success in today's competitive business landscape.", + "event_type": "hybrid", + "start_time": "2026-10-21 19:15:00", + "end_time": "2026-10-21 20:15:00", + "tags": [ + "LeadershipTraining", + "Networking", + "LatinAmerica" + ] + }, + { + "id": "4313ea38-19fd-475c-8170-d20f717a9e96", + "club_id": "3d55e6e2-74bc-41da-bc4d-db75b05afd43", + "name": "Event for Baja SAE Northeastern", + "preview": "This club is holding an event.", + "description": "Come join Baja SAE Northeastern for our annual Design Day event, where you'll get an exclusive behind-the-scenes look at how our team creates and fine-tunes our high-performance vehicle for the upcoming Baja SAE collegiate design competitions. Learn about the engineering design process, see demonstrations of CAD and manufacturing techniques, and meet our team members who will share their experiences and insights. Whether you're a seasoned engineer or just starting out, Design Day is the perfect opportunity to immerse yourself in a dynamic environment of innovation, collaboration, and hands-on learning. Don't miss this chance to be part of our exciting journey towards building a winning vehicle and taking on the challenges of the competition circuit!", + "event_type": "virtual", + "start_time": "2024-06-03 20:30:00", + "end_time": "2024-06-03 21:30:00", + "tags": [ + "Leadership" + ] + }, + { + "id": "f055dbb3-164a-4269-8895-539bb65714da", + "club_id": "3d55e6e2-74bc-41da-bc4d-db75b05afd43", + "name": "Event for Baja SAE Northeastern", + "preview": "This club is holding an event.", + "description": "Join Baja SAE Northeastern for an exciting hands-on event where you can experience the thrill of designing, building, and racing high-performance vehicles alongside a supportive and close-knit team. Test your skills in challenges like rock crawls, hill climbs, and a grueling endurance race while learning the engineering design cycle, CAD, manufacturing techniques, and leadership qualities. Whether you're a seasoned engineer or a newcomer, our team welcomes you to join us in creating a winning vehicle that can outperform competitors from all over the world. Don't miss this opportunity to be part of a passionate community that thrives on teamwork and innovation!", + "event_type": "hybrid", + "start_time": "2026-02-25 20:15:00", + "end_time": "2026-02-25 22:15:00", + "tags": [ + "Teamwork", + "Leadership", + "EngineeringDesign", + "Racing" + ] + }, + { + "id": "68fc103c-20f6-403b-8437-e379543985d4", + "club_id": "3d55e6e2-74bc-41da-bc4d-db75b05afd43", + "name": "Event for Baja SAE Northeastern", + "preview": "This club is holding an event.", + "description": "Join Baja SAE Northeastern for our annual Vehicle Design Showcase! Experience the thrill as our talented team members unveil the cutting-edge design and technology behind our high-performance racing vehicle. Get up close and personal with our vehicle through interactive demos and learn firsthand about our engineering design process, manufacturing techniques, and teamwork approach. Meet the passionate individuals who make up our team and discover how you can get involved in this exciting hands-on learning experience. Whether you're a seasoned engineer or just starting out, our showcase is the perfect opportunity to witness innovation in action and join a community that thrives on pushing boundaries and achieving excellence.", + "event_type": "virtual", + "start_time": "2025-11-24 13:00:00", + "end_time": "2025-11-24 15:00:00", + "tags": [ + "MechanicalEngineering", + "EngineeringDesign", + "Leadership", + "Racing", + "Teamwork" + ] + }, + { + "id": "3e93e800-1040-4af5-9434-9ed0b5a862d5", + "club_id": "cd5983f5-b1e9-4e5e-b948-e04915a22f64", + "name": "Event for Bake It Till You Make It", + "preview": "This club is holding an event.", + "description": "Join us for a fun-filled Cupcake Decorating Party! Show off your creativity and skills as we whip up a variety of colorful frostings and toppings to adorn our freshly baked cupcakes. Whether you're an experienced baker or just starting out, this event is perfect for anyone looking to have a sweet time in good company. Bring your friends and get ready to sprinkle some joy into your week with the Bake It Till You Make It club!", + "event_type": "virtual", + "start_time": "2026-09-28 22:00:00", + "end_time": "2026-09-29 02:00:00", + "tags": [ + "VisualArts" + ] + }, + { + "id": "5c56d4b1-96dd-438a-9c1f-c85f34617898", + "club_id": "7c8dd808-ee6f-4057-838b-3fde54fb3389", + "name": "Event for BAPS Campus Fellowship", + "preview": "This club is holding an event.", + "description": "Come join BAPS Campus Fellowship for an enlightening evening of spiritual exploration and community-building! Our upcoming event, 'Discovering Hinduism Through Art & Music', will immerse you in the rich traditions and vibrant culture of the Hindu faith. Engage in interactive discussions led by experienced mentors, enjoy soul-stirring music performances, and unleash your creativity in hands-on artistic workshops. Whether you're a curious beginner or a seasoned practitioner, this event promises an enriching experience for all. Embrace diversity, foster connections, and embark on a journey of self-discovery with us!", + "event_type": "hybrid", + "start_time": "2024-03-04 15:15:00", + "end_time": "2024-03-04 16:15:00", + "tags": [ + "Volunteerism", + "CommunityOutreach" + ] + }, + { + "id": "b82096cd-83e9-4b58-950f-629f63fdff00", + "club_id": "7c8dd808-ee6f-4057-838b-3fde54fb3389", + "name": "Event for BAPS Campus Fellowship", + "preview": "This club is holding an event.", + "description": "Join us for an enlightening evening at BAPS Campus Fellowship as we delve into the fascinating world of Hindu faith and culture. Engage in lively group discussions, participate in engaging campus events, and contribute to meaningful community service projects. This event is the perfect opportunity for students to share their beliefs and customs with the vibrant NEU community, fostering understanding and connection among peers. Come be a part of this enriching experience and help spread awareness of the Hindu faith in a warm and welcoming environment!", + "event_type": "in_person", + "start_time": "2025-07-02 13:30:00", + "end_time": "2025-07-02 17:30:00", + "tags": [ + "CommunityOutreach", + "Volunteerism" + ] + }, + { + "id": "b925a0bc-4e99-4460-8ccc-3bd556f0542b", + "club_id": "25e9b53e-f0aa-4108-9da2-9a3ce4727293", + "name": "Event for Barkada", + "preview": "This club is holding an event.", + "description": "Join Barkada for a lively cultural showcase event called 'Barrio Fiesta'! Immerse yourself in the vibrant colors, tantalizing smells, and rhythmic beats of the Philippines as we celebrate our heritage through traditional dances like Tinikling and cultural performances. Indulge in delicious Filipino cuisine like pancit and lumpia, and participate in fun interactive activities that will transport you to the beautiful islands of the Philippines. Whether you're a seasoned member or a newcomer curious about Filipino culture, 'Barrio Fiesta' promises to be a joyous gathering where friendships are forged and cultural understanding blossoms. Don't miss out on this unforgettable experience of unity, diversity, and pure Filipino spirit with Barkada!", + "event_type": "virtual", + "start_time": "2026-12-21 12:15:00", + "end_time": "2026-12-21 14:15:00", + "tags": [ + "PerformingArts", + "AsianAmerican", + "CommunityOutreach", + "Volunteerism", + "VisualArts" + ] + }, + { + "id": "915f0206-592e-40c1-8c07-d9d41dc7a55f", + "club_id": "25e9b53e-f0aa-4108-9da2-9a3ce4727293", + "name": "Event for Barkada", + "preview": "This club is holding an event.", + "description": "Join us for an evening of cultural exploration and community bonding at Barkada's annual Cultural Heritage Night! Immerse yourself in the vibrant sights and sounds of Filipino traditions with traditional dances like Tinikling, mouth-watering Filipino cuisine, and interactive displays showcasing the beauty of our culture. Whether you're a seasoned member or a newcomer to the Barkada family, this event is the perfect opportunity to celebrate and learn together. Don't miss out on this unforgettable experience where friendships are strengthened, memories are made, and the spirit of Barkada shines bright. See you there! \ud83c\uddf5\ud83c\udded\u2728", + "event_type": "virtual", + "start_time": "2026-10-11 16:15:00", + "end_time": "2026-10-11 19:15:00", + "tags": [ + "PerformingArts", + "AsianAmerican", + "Volunteerism", + "VisualArts", + "CommunityOutreach" + ] + } + ] +} \ No newline at end of file diff --git a/mock_data/README.md b/mock_data/README.md index 8b86f8bdb..eb7d7eb41 100644 --- a/mock_data/README.md +++ b/mock_data/README.md @@ -2,25 +2,25 @@ A Python script that creates mock club, tag, and category data for development and testing. +WARNING: This will wipe all existing club, tag, and category data in the DB! **DO NOT USE IN PRODUCTION** ## Installation and Usage This script was last developed using Python 3.12.2, and assumes you have Python installed. ```console pip install -r requirements.txt -python main.py mock.sql +python main.py ``` ```console -usage: Mock data generator [-h] [-a API_KEY] [-t TOP_N] [-p PARENT_UUID] output_file +usage: Mock data generator [-h] [-s] [-a API_KEY] [-t TOP_N] [-p PARENT_UUID] Generates mock club, category, and tag data for testing/development. -positional arguments: - output_file The SQL file to output the data to. - options: -h, --help show this help message and exit - -a API_KEY, --api-key API_KEY + -s, --skip_generation + Skip mock data generation. Instead, will look for a MOCK_DATA_OUTPUT.json in the CWD and use that to write to the DB. + -a API_KEY, --api_key API_KEY The OpenAI API key to use for generating descriptions and tags for clubs. (default: key in OPENAI_API_KEY or '' if that doesn't exist.) -t TOP_N, --top-n TOP_N The max # of clubs to retrieve from NUEngage. (default: 1024) diff --git a/mock_data/main.py b/mock_data/main.py index 18ac88892..4c91d3910 100644 --- a/mock_data/main.py +++ b/mock_data/main.py @@ -8,19 +8,20 @@ from progress.bar import IncrementalBar as Bar from openai import OpenAI +import psycopg2 import requests # STEP 0: Initialize constants + utility/helper functions parser = argparse.ArgumentParser(prog="Mock data generator", description="Generates mock club, category, and tag data for testing/development.") -parser.add_argument("output_file", help="The SQL file to output the data to.") -parser.add_argument("-a", "--api-key", default=os.environ.get("OPENAI_API_KEY", ""), help="The OpenAI API key to use for generating descriptions and tags for clubs. (default: key in OPENAI_API_KEY or '' if that doesn't exist.)") +parser.add_argument("-s", "--skip_generation", action='store_true', help="Skip mock data generation. Instead, will look for a MOCK_DATA_OUTPUT.json in the CWD and use that to write to the DB.") +parser.add_argument("-a", "--api_key", default=os.environ.get("OPENAI_API_KEY", ""), help="The OpenAI API key to use for generating descriptions and tags for clubs. (default: key in OPENAI_API_KEY or '' if that doesn't exist.)") parser.add_argument("-t", "--top-n", default=1024, help="The max # of clubs to retrieve from NUEngage. (default: 1024)") parser.add_argument("-p", "--parent_uuid", default="00000000-0000-0000-0000-000000000000", help="The UUID of the parent club for the generated clubs. (default: 00000000-0000-0000-0000-000000000000)") + args = parser.parse_args() openai_client = OpenAI(api_key=args.api_key) -OUTPUT_FILE = args.output_file TOP_N = args.top_n PARENT_UUID = args.parent_uuid @@ -98,119 +99,314 @@ def tags_prompt(name: str, description: str) -> str: Your output should just be the JSON with the array, no other text. Thank you! """ -# STEP 1: Generate all the data to write to mock.sql +def events_prompt(name: str, description: str) -> str: + return f""" + I need your help writing event descriptions to create some mock data for an app I'm working on. The club's name is \"{name}\", and its description is \"{description}\". + Generate a one paragraph description of an event this club cluld have. Use a mix of friendly, welcoming, and informative language and content. Store in this a JSON field \"event\". + Your output should just be the JSON with the generated description, no other text. Thank you! + """ + +def random_start_and_endtimes() -> tuple[datetime.datetime, datetime.datetime]: + year = random.randint(2024,2026) + month = random.randint(1,12) + day = random.randint(1,28) + hour = random.randint(12,23) + minute = random.choice([0,15,30]) -# Get the clubs from nuengage, do some cleaning, and generate description (if needed) and tags (always needed) -clubs_response = requests.get(f"https://neu.campuslabs.com/engage/api/discovery/search/organizations?orderBy[0]=UpperName%20asc&top={TOP_N}&skip=0") -clubs_json = json.loads(clubs_response.text)['value'] -clubs = [] + extra_hours = time_to_add = datetime.timedelta(hours=random.randint(1,4)) + + start_time = datetime.datetime(year, month, day, hour, minute) + end_time = start_time + extra_hours + + return (start_time, end_time) -bar = Bar('Making club data', max=len(clubs_json), suffix="%(remaining)d Remaining, ETA: %(eta_td)s") -bad_club_descriptions = 0 -for club in clubs_json: - name = club['Name'].replace("(Tentative) ", "") - preview = club['Summary'] - description = club['Description'] +# STEP 1: Generate mock data. +if not args.skip_generation: + print("Skip generation is false, making mock data...") + # Get the clubs from nuengage, do some cleaning, and generate description (if needed) and tags (always needed) + print("Making NUEngage request...") + clubs_response = requests.get(f"https://neu.campuslabs.com/engage/api/discovery/search/organizations?orderBy[0]=UpperName%20asc&top={TOP_N}&skip=0") + print("NUEngage request done.") - # Generate description for club if needed. - if not isinstance(description, str): - description_response = openai_client.chat.completions.create( + clubs_json = json.loads(clubs_response.text)['value'] + clubs = [] + events = [] + + bar = Bar('Making club data', max=len(clubs_json), suffix="%(remaining)d Remaining, ETA: %(eta_td)s") + bad_club_descriptions = 0 + for club in clubs_json: + name = club['Name'].replace("(Tentative) ", "").replace("( Tentative) ", "") + preview = club['Summary'][:250] + description = club['Description'] + + # Generate description for club if needed. + if not isinstance(description, str): + description_response = openai_client.chat.completions.create( + model="gpt-3.5-turbo-0125", + response_format={ "type": "json_object" }, + messages=[ + {"role": "system", "content": "You are a helpful assistant designed to output JSON."}, + {"role": "user", "content": description_prompt(name, preview)} + ] + ) + + description = json.loads(description_response.choices[0].message.content)['description'] + # Some description responses will not contain valid JSON, hence this if check. + if not isinstance(description, str): + description = "" + bad_club_descriptions += 1 + else: + description = re.sub('<[^<]+?>', '', club['Description']).replace(" ", " ") + + tags_response = openai_client.chat.completions.create( model="gpt-3.5-turbo-0125", response_format={ "type": "json_object" }, messages=[ {"role": "system", "content": "You are a helpful assistant designed to output JSON."}, - {"role": "user", "content": description_prompt(name, preview)} + {"role": "user", "content": tags_prompt(name, description)} ] ) - description = json.loads(description_response.choices[0].message.content)['description'] - # Some description responses will not contain valid JSON, hence this if check. - if not isinstance(description, str): - description = "" - bad_club_descriptions += 1 - else: - description = re.sub('<[^<]+?>', '', club['Description']).replace(" ", " ") - - tags_response = openai_client.chat.completions.create( - model="gpt-3.5-turbo-0125", - response_format={ "type": "json_object" }, - messages=[ - {"role": "system", "content": "You are a helpful assistant designed to output JSON."}, - {"role": "user", "content": tags_prompt(name, description)} - ] - ) - - tags = json.loads(tags_response.choices[0].message.content)['tags'] + tags = json.loads(tags_response.choices[0].message.content)['tags'] + + clubData = { + "id": str(uuid4()), + "name": name, + "preview": preview, + "description": description, + "num_members": random.randint(1,1024), + "is_recruiting": random.choice(["TRUE", "FALSE"]), + "recruitment_cycle": random.choice(["fall", "spring", "fallSpring", "always"]), + "recruitment_type": random.choice(["unrestricted", "application"]), + "tags": tags + } + + clubs.append(clubData) + + iterations = random.randint(1,3) + for i in range(0,iterations): + event_response = openai_client.chat.completions.create( + model="gpt-3.5-turbo-0125", + response_format={ "type": "json_object" }, + messages=[ + {"role": "system", "content": "You are a helpful assistant designed to output JSON."}, + {"role": "user", "content": events_prompt(name, description)} + ] + ) + + # Some descriptions will not be valid JSON + event_description = json.loads(event_response.choices[0].message.content)['event'] + if not isinstance(event_description, str): + event_description = "Event description" + + times = random_start_and_endtimes() + + events.append({ + "id": str(uuid4()), + "club_id": clubData["id"], + "name": f"Event for {clubData["name"]}", + "preview": "This club is holding an event.", + "description": event_description, + "event_type": random.choice(["hybrid", "in_person", "virtual"]), + "start_time": times[0].strftime("%Y-%m-%d %H:%M:%S"), + "end_time": times[1].strftime("%Y-%m-%d %H:%M:%S"), + "tags": random.sample(tags, random.randint(1,len(tags))) + }) + bar.next() - clubs.append({ - "id": str(uuid4()), - "name": name, - "preview": preview, - "description": description, - "num_members": random.randint(1,1024), - "is_recruiting": random.choice(["TRUE", "FALSE"]), - "recruitment_cycle": random.choice(["fall", "spring", "fallSpring", "always"]), - "recruitment_type": random.choice(["unrestricted", "application"]), - "tags": tags - }) - - bar.next() -bar.finish() -print(f"Bad club descriptions (JSON not created properly): {bad_club_descriptions}") - -# Generate the UUIDS for Categories, Tags, and a table for tags to categories. -category_uuids = {category: str(uuid4()) for category in MOCK_CATEGORIES_AND_TAGS} - -tag_uuids = {tag: str(uuid4()) for tag in MOCK_CATEGORIES_AND_TAGS.values() for tag in tags} -tags_to_categories = {tag: category for category, tags in MOCK_CATEGORIES_AND_TAGS.items() for tag in tags} - -# STEP 2: Write to SQL file. -with open(OUTPUT_FILE, 'w', encoding='utf-8') as file: - def w(x): - file.write(f"{x}\n") - - # Header - w("-- AUTO GENERATED MOCK DATA. DO NOT MODIFY") - w(f"-- GENERATED AT {datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")}") - - # Categories - w("BEGIN;") - for category, uuid in category_uuids.items(): - w(f"""INSERT INTO "categories" ("id", "name") VALUES ('{uuid}', '{category}');""") + bar.finish() + print(f"Bad club descriptions (JSON not created properly): {bad_club_descriptions}") + + # Generate the UUIDS for Categories, Tags, and a table for tags to categories. + category_uuids = {} + for category in MOCK_CATEGORIES_AND_TAGS: + category_uuids[category] = str(uuid4()) + + tag_uuids = {} + for category, tags in MOCK_CATEGORIES_AND_TAGS.items(): + for tag in tags: + tag_uuids[tag] = str(uuid4()) + + tags_to_categories = {} + for category, tags in MOCK_CATEGORIES_AND_TAGS.items(): + for tag in tags: + tags_to_categories[tag] = category + - # Tags - for tag, uuid in tag_uuids.items(): - w(f"""INSERT INTO "tags" ("id", "name", "category_id") VALUES ('{uuid}', '{tag}', '{category_uuids[tags_to_categories[tag]]}');""") + with open("MOCK_DATA_OUTPUT" + ".json", 'w', encoding='utf-8') as file: + print("Writing JSON file of mock data (needed in case of debugging, free to delete otherwise)") + file.write(json.dumps({ + "category_uuids": category_uuids, + "tag_uuids": tag_uuids, + "tags_to_categories": tags_to_categories, + "clubs": clubs, + "events": events + } + )) + +if not os.path.exists("MOCK_DATA_OUTPUT.json"): + print("Error: no MOCK_DATA_OUTPUT.json found. Did you try running this tool with '--skip-generation=False'?") + exit(0) + +# STEP 3: Connect to DB and write entries. +category_uuids = {} +tag_uuids = {} +tags_to_categories = {} +clubs = [] +events = [] + +with open('MOCK_DATA_OUTPUT.json', 'r', encoding='utf-8') as file: + data = json.loads(file.read()) + clubs = data['clubs'] + events = data['events'] + tags_to_categories = data['tags_to_categories'] + tag_uuids = data['tag_uuids'] + category_uuids = data['category_uuids'] + + + +# FIXME: should probably be in args or something but ughhhhh +db_conn = psycopg2.connect( + dbname="sac", + user="postgres", + password="password", + host="127.0.0.1", + port="5432" +) + +cur = db_conn.cursor() + +# STEP 3: Write to SQL file. +def transaction(func): + def wrapper(*args, **kwargs): + try: + func(*args, **kwargs) + except psycopg2.OperationalError as e: + db_conn.rollback() + print(e) + exit(0) + except psycopg2.ProgrammingError as e: + db_conn.rollback() + print(e) + exit(0) + finally: + db_conn.commit() + return wrapper + +@transaction +def delete_existing(): + print("Deleting from existing tables...") + cur.execute("DELETE FROM clubs") + cur.execute("DELETE FROM categories") + cur.execute("DELETE FROM tags") + cur.execute("DELETE FROM club_tags") + +@transaction +def fill_clubs(): + print("Creating club data...") + cmd = """INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "parent") VALUES (%s, %s, %s, %s, %s, %s)""" - # Clubs for club in clubs: - w("""INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('{}', '{}', '{}', '{}', '{}', '{}', '{}', '{}', '{}');""".format( + data = ( club['id'], club['name'].replace("\'", "''"), club['preview'].replace("\'", "''"), club['description'].replace('\'', "''"), str(club['num_members']), - club['is_recruiting'], - club['recruitment_cycle'], - club['recruitment_type'], PARENT_UUID - )) + ) + + cur.execute(cmd, data) + +@transaction +def fill_events(): + print("Creating event data...") + cmd = """INSERT INTO "events" ("id", "host", "name", "preview", "description", "event_type", "start_time", "end_time", "is_public", "is_draft", "is_archived") VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""" + + for event in events: + data = ( + event['id'], + event['club_id'], + event['name'].replace("\'", "''"), + event['preview'].replace("\'", "''"), + event['description'].replace('\'', "''"), + event['event_type'], + event['start_time'], + event['end_time'], + True, + False, + False + ) + + cur.execute(cmd, data) + +@transaction +def fill_tags_and_categories(): + print("Creating category and tag data...") + cmd = """INSERT INTO "categories" ("id", "name") VALUES (%s, %s);""" + for category, uuid in category_uuids.items(): + cur.execute(cmd, (uuid, category)) - # Tags <-> Clubs + cmd = """INSERT INTO "tags" ("id", "name", "category_id") VALUES (%s, %s, %s)""" + for tag, uuid in tag_uuids.items(): + cur.execute(cmd, (uuid, tag, category_uuids[tags_to_categories[tag]])) + +@transaction +def connect_clubs_to_tags(): + print("Adding tags to clubs...") + cmd = """INSERT INTO "club_tags" ("tag_id", "club_id") VALUES (%s, %s);""" + # FIXME (maybe)?: The ChatGPT tags prompt will return tags that aren't in the list, hence this if statement being here. # Don't think its a huge issue because ~half of tags are good. + # FIXME (maybe)?: The ChatGPT tags prompt will return duplicate tags. oml bad_tags = 0 total_tags = 0 for club in clubs: - total_tags += len(club['tags']) - for tag in club['tags']: + clubTagsWithDuplicatesRemoved = list(set(club['tags'])) + total_tags += len(clubTagsWithDuplicatesRemoved) + for tag in clubTagsWithDuplicatesRemoved: + if tag in tag_uuids: + cur.execute(cmd, (tag_uuids[tag], club['id'])) + else: + bad_tags += 1 + + print(f"{bad_tags}/{total_tags} marked for not existing in tag_uuids.") + +@transaction +def connect_events_to_tags(): + print("Adding tags to events...") + cmd = """INSERT INTO "event_tags" ("tag_id", "event_id") VALUES (%s, %s);""" + + # FIXME (maybe)?: The ChatGPT tags prompt will return tags that aren't in the list, hence this if statement being here. + # Don't think its a huge issue because ~half of tags are good. + # FIXME (maybe)?: The ChatGPT tags prompt will return duplicate tags. oml + bad_tags = 0 + total_tags = 0 + for event in events: + eventTagsWithDuplicatesRemoved = list(set(event['tags'])) + total_tags += len(eventTagsWithDuplicatesRemoved) + for tag in eventTagsWithDuplicatesRemoved: if tag in tag_uuids: - w(f"""INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('{tag_uuids[tag]}', '{club['id']}')""") + cur.execute(cmd, (tag_uuids[tag], event['id'])) else: bad_tags += 1 print(f"{bad_tags}/{total_tags} marked for not existing in tag_uuids.") - w("COMMIT;") +@transaction +def connect_clubs_to_events(): + print("Connecting events to clubs...") + cmd = """INSERT INTO "club_events" ("club_id", "event_id") VALUES (%s, %s);""" + + for event in events: + data = (event["club_id"], event["id"]) + + cur.execute(cmd, data) - w("-- END GENERATED MOCK DATA. Made with <3 by Garrett and Michael") \ No newline at end of file +delete_existing() +fill_clubs() +fill_events() +fill_tags_and_categories() +connect_clubs_to_tags() +connect_events_to_tags() +connect_clubs_to_events() diff --git a/mock_data/nuengage_mock_data.sql b/mock_data/nuengage_mock_data.sql deleted file mode 100644 index 733a6cfcc..000000000 --- a/mock_data/nuengage_mock_data.sql +++ /dev/null @@ -1,4408 +0,0 @@ --- AUTO GENERATED MOCK DATA. DO NOT MODIFY --- GENERATED AT 2024-04-29 23:39:23 -BEGIN; -INSERT INTO "categories" ("id", "name") VALUES ('5091d890-76de-4056-bab9-0be26e42daeb', 'PreProfessional'); -INSERT INTO "categories" ("id", "name") VALUES ('01bb75df-b46a-4634-b2b8-639dbf3d0003', 'CulturalAndIdentity'); -INSERT INTO "categories" ("id", "name") VALUES ('3532293b-d4da-4fb4-adc2-ee08608e90d0', 'ArtsAndCreativity'); -INSERT INTO "categories" ("id", "name") VALUES ('33759b1b-f709-4be5-99f6-034d15090980', 'SportsAndRecreation'); -INSERT INTO "categories" ("id", "name") VALUES ('ac91e32e-7969-4c01-8e74-e375a707e83e', 'ScienceAndTechnology'); -INSERT INTO "categories" ("id", "name") VALUES ('fbb7df7c-e03a-4004-8396-fbc42b4433ea', 'CommunityServiceAndAdvocacy'); -INSERT INTO "categories" ("id", "name") VALUES ('f172961a-5a0c-4086-b981-dd911227858e', 'MediaAndCommunication'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('3b8d0f19-9588-4e45-b038-77cba49803c0', 'Premed', '5091d890-76de-4056-bab9-0be26e42daeb'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('e4ea26ce-1444-41be-9342-f085f615f9a7', 'Prelaw', '5091d890-76de-4056-bab9-0be26e42daeb'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('9195072b-0a1b-4915-bd80-10b05ad1bef0', 'Judaism', '01bb75df-b46a-4634-b2b8-639dbf3d0003'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('338fcc4b-2b2c-4312-8de9-58ccd249a028', 'Christianity', '01bb75df-b46a-4634-b2b8-639dbf3d0003'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('ad528419-c98a-47f9-b0a2-e72ac372faa2', 'Hinduism', '01bb75df-b46a-4634-b2b8-639dbf3d0003'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('297fd449-1e9a-461b-8014-48f08fb16aa5', 'Islam', '01bb75df-b46a-4634-b2b8-639dbf3d0003'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('1f14ba08-b71f-4f00-b2a4-a9b6ae25e420', 'LatinAmerica', '01bb75df-b46a-4634-b2b8-639dbf3d0003'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', 'AfricanAmerican', '01bb75df-b46a-4634-b2b8-639dbf3d0003'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', 'AsianAmerican', '01bb75df-b46a-4634-b2b8-639dbf3d0003'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', 'LGBTQ', '01bb75df-b46a-4634-b2b8-639dbf3d0003'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', 'PerformingArts', '3532293b-d4da-4fb4-adc2-ee08608e90d0'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', 'VisualArts', '3532293b-d4da-4fb4-adc2-ee08608e90d0'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'CreativeWriting', '3532293b-d4da-4fb4-adc2-ee08608e90d0'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', 'Music', '3532293b-d4da-4fb4-adc2-ee08608e90d0'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('57ed199d-56d3-4308-bda1-3d7b7bf785c3', 'Soccer', '33759b1b-f709-4be5-99f6-034d15090980'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('77b17b1f-0c74-46da-8e19-293ac88097f4', 'Hiking', '33759b1b-f709-4be5-99f6-034d15090980'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('618cafbb-0d29-4a94-8b0d-14d76e53b51a', 'Climbing', '33759b1b-f709-4be5-99f6-034d15090980'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('6bdecd9e-b28f-433c-9644-f7da9fe2289c', 'Lacrosse', '33759b1b-f709-4be5-99f6-034d15090980'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('8b533527-e232-42d6-9d50-686266095a6d', 'Mathematics', 'ac91e32e-7969-4c01-8e74-e375a707e83e'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('7eb9c15f-4243-4895-ada4-d08c61ebeaf1', 'Physics', 'ac91e32e-7969-4c01-8e74-e375a707e83e'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', 'Biology', 'ac91e32e-7969-4c01-8e74-e375a707e83e'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('634b4962-9bf6-444e-84c7-5e54d8655ba4', 'Chemistry', 'ac91e32e-7969-4c01-8e74-e375a707e83e'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', 'EnvironmentalScience', 'ac91e32e-7969-4c01-8e74-e375a707e83e'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('dcf59820-af9a-4599-9552-0154f35d42d6', 'Geology', 'ac91e32e-7969-4c01-8e74-e375a707e83e'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', 'Neuroscience', 'ac91e32e-7969-4c01-8e74-e375a707e83e'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('5b779401-bfa3-45c3-9f90-bb018ad8caec', 'Psychology', 'ac91e32e-7969-4c01-8e74-e375a707e83e'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', 'SoftwareEngineering', 'ac91e32e-7969-4c01-8e74-e375a707e83e'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('ae80ccd8-f2be-4785-b08b-c13c59f6cf84', 'ArtificialIntelligence', 'ac91e32e-7969-4c01-8e74-e375a707e83e'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', 'DataScience', 'ac91e32e-7969-4c01-8e74-e375a707e83e'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('c1000c08-c02e-421c-ad34-a81836d1d053', 'MechanicalEngineering', 'ac91e32e-7969-4c01-8e74-e375a707e83e'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('f810f8cf-4957-4012-892a-a50cd15e7294', 'ElectricalEngineering', 'ac91e32e-7969-4c01-8e74-e375a707e83e'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('67f9a398-4dd3-4cc5-8e72-8f3f2e65a436', 'IndustrialEngineering', 'ac91e32e-7969-4c01-8e74-e375a707e83e'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'Volunteerism', 'fbb7df7c-e03a-4004-8396-fbc42b4433ea'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', 'EnvironmentalAdvocacy', 'fbb7df7c-e03a-4004-8396-fbc42b4433ea'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'HumanRights', 'fbb7df7c-e03a-4004-8396-fbc42b4433ea'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'CommunityOutreach', 'fbb7df7c-e03a-4004-8396-fbc42b4433ea'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', 'Journalism', 'f172961a-5a0c-4086-b981-dd911227858e'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('c95794c9-a2af-45f8-9ece-c7f343984e60', 'Broadcasting', 'f172961a-5a0c-4086-b981-dd911227858e'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('374736cf-3d8d-4ffc-849f-89efd55ee243', 'Film', 'f172961a-5a0c-4086-b981-dd911227858e'); -INSERT INTO "tags" ("id", "name", "category_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', 'PublicRelations', 'f172961a-5a0c-4086-b981-dd911227858e'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('07d91099-3ccd-481e-b24d-cfa7b5bdce52', 'Bake It Till You Make It', 'Bake It Till You Make It aims to cultivate an inclusive community for students to share and expand their love of baking!', 'Bake It Till You Make It is an organization to bring students together who have an interest or passion for baking. Whether you''re a seasoned pastry chef or a novice in the kitchen, our club provides a space to explore the art of baking, share delicious recipes, and foster a love for all things sweet. Come join us, and let''s bake memories together!', '201', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('02823e48-6cb5-4727-ae13-3ca6b4eca78b', 'Baltic Northeastern Association', 'The Baltic Northeastern Association serves as a home away from home for students from the Baltic countries, as well as an opportunity to share Baltic culture with interested students. ', 'The Baltic Northeastern Association serves as a home away from home for students from the Baltic countries, as well as an opportunity to share Baltic culture with interested students. We will host weekly meetings that can range from cooking sessions, discussions of Baltic culture and language, sharing Baltic traditional dancing and music, and more. ', '359', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('75dc80f4-ea4f-4964-8fba-e752794d1a47', 'Bangladeshi Organization of Networking, Diversity, Heritage, Unity and Support', 'The BONDHUS is dedicated to fostering a sense of home for Bangladeshi students and those interested in Bangladeshi culture, as well as celebrating the rich cultural heritage of Bangladesh.', 'The BONDHUS is dedicated to fostering a sense of home for Bangladeshi students and those interested in Bangladeshi culture. We strive to provide mentorship, build cultural awareness, and offer assistance with college admissions, including hosting events in Bangladesh related to Northeastern University. Our mission is to create an inclusive community that celebrates and promotes the rich heritage of Bangladesh while providing support and growth opportunities for our members. Our target membership includes Bangladeshi international undergraduates and graduates, Bangladeshi diaspora-born undergraduates and graduates, and non-Bangladeshi undergraduates and graduates interested in our culture and mission. We plan to host a wide range of events and initiatives, including: - -Cultural Celebrations: We will honor significant Bangladeshi events such as Pohela Boishakh (New Year''s Day), Ekushe February (International Mother Language Day), and Shadhinota Dibosh (Independence Day). - -Festive Gatherings: Observing cultural festivals like Eid and Puja, allowing members to share these joyous occasions together. - -Food-Based Events: Showcasing the vibrant and diverse Bangladeshi cuisine through cooking demonstrations, food festivals, and shared meals. - -Collaborations with Other BSAs: Building strong connections with other Bangladesh Student Associations to enhance cultural exchange and support. - -Fundraising Initiatives: Organizing events to support causes related to education and community development in Bangladesh. - -In conclusion, the BONDHUS aims to be a vibrant hub that nurtures a sense of belonging, celebrates cultural identity, and provides avenues for personal and professional growth. Through our planned activities and initiatives, we hope to create a dynamic and supportive community that connects Bangladesh with the broader academic landscape.', '855', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('82142fe4-7603-4828-9d19-64fbbe09029d', 'Binky Patrol', 'Binky Patrol is club that makes blankets by hand to donate to children in hospitals and shelters', 'Binky Patrol is a club that makes blankets by hand to donate to children in hospitals and shelters - if you want to get involved, join the slack with the link below! - -https://join.slack.com/t/binkypatrolnu/shared_invite/zt-2aiwtfdnb-Kmi~pPtsE9_xPTxrwF3ZOQ', '168', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('8e12dc9d-2900-4cca-b08d-caed85720fa6', 'Biokind Analytics Northeastern', 'Biokind Analytics Northeastern brings together undergraduate data scientists and statisticians across the world to apply classroom learning for meaningful, positive societal impact in their communities.', 'Biokind Analytics Northeastern is a local chapter of the larger nonprofit organization, Biokind Analytics. The club aims to provide Northeastern students with the opportunity to apply data analysis skills and learnings to further the mission of local healthcare non-profit organizations in the Boston region. Our goal is to promote the development of relationships between Northeastern students and healthcare non-profits to better contribute to our local community. ', '357', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('2b4315f6-304f-4704-be0f-ba367fe87932', 'Black Graduate Student Association ', 'The purpose of Black Graduate Student Association is to enhance scholarly and professional development of graduate students at Northeastern through networking, seminars, forums, workshops, and social gatherings in the Boston Area. ', 'Welcome to the Black Graduate Student Association! Our club is dedicated to enhancing the scholarly and professional development of graduate students at Northeastern University. Through networking opportunities, informative seminars, engaging forums, skill-building workshops, and fun social gatherings in the vibrant city of Boston, we strive to create a supportive community where members can thrive academically and socially. Join us in cultivating meaningful connections, expanding your knowledge, and enjoying enriching experiences as part of our inclusive and empowering club!', '13', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('33a0db57-ff20-4997-bfe7-518c7d8db242', 'Brazilian Jiu Jitsu at Northeastern University', 'BJJ is primarily a ground based martial art focusing on the submission of the opponent through principles of angles, leverage, pressure and timing, in order to achieve submission of the opponent in a skillful and technical way. - -', 'Join our Discord: https://discord.gg/3RuzAtZ4WS - -Follow us on Instagram: @northeasternbjj', '717', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('952d429e-f309-4332-a45b-113efd8e27ac', 'COExist', 'The COExist program will make becoming a husky easier than ever. Upper-class mentors will provide incoming first-year engineering students, mentees, with a comprehensive program to introduce, clarify and explain all of the opportunities that Northeaster', 'Welcome to COExist! Our program is designed to make your transition to becoming a husky at Northeastern University smoother than ever. Get ready to embark on this exciting journey with the help of our friendly upper-class mentors who are dedicated to guiding incoming first-year engineering students through a comprehensive program. From introducing you to campus life to clarifying the diverse opportunities available at Northeastern, our mentors are here to support you every step of the way. Join COExist and let us help you maximize your university experience!', '967', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('1eff502d-5ac2-4f9d-a33e-66a5e9b98f15', 'Color Guard', 'A non-competitive Winter Guard team that meets once a week to practice new skills and meet members in the community. Performance opportunities will be made available throughout the year if members show interest and want to perform. ', 'Color Guard is a Dance-based activity that involves the use of equipment including but not limited to Rifles, Sabres and Flags. Members of Color Guards, referred to as spinners, work throughout the season to put together a themed show/performance with theme-based equipment, uniforms and floor tarp. This organization aims to introduce new students into the activity and provide a space for experienced members to come and practice and try new skills. Throughout the year, members interested in performing will put together a short winter guard show. ', '947', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('cb86b62b-a14f-49d0-8217-005f456992d0', 'Community Palette', 'We aim to provide art programs for individuals within underprivileged, clinical, or community centers that may use art to better their mental health. In doing so, we hope to address the issue of limited wellness services in clinical and community centers', 'The purpose of this organization is to expand creative and visual arts for individuals within underprivileged, clinical, or community centers in Boston that may use art as a way to cope from stress or require it to better their mental health and wellbeing. In doing so, we hope to destigmatize using the arts as a coping mechanism and foster friendships to address the issue of limited wellness services within clinical settings and community centers. We hope to bring together Northeastern students who are eager to get involved within our surrounding neighborhoods and have a strong desire to help alleviate stresses others may face through helping them escape with visual art projects and group activities. ', '262', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('7b7c7b43-a1fc-435c-afa4-3c8057b589c3', 'ConnectED Research ', 'ConnectEd Research promotes educational equality, cultivates scholars, and hosts events to connect students and professors, fostering an inclusive academic community. We aim to bridge gaps in resources, empowering all students to excel in academia. - - - - - -', 'ConnectEd Research is a vibrant club dedicated to promoting educational equality and cultivating scholars within an inclusive academic community. Through a range of engaging events and initiatives, we strive to connect students and professors, bridging gaps in resources to empower all students to excel in academia. Join us as we work together to create a welcoming environment that fosters learning, growth, and collaboration.', '552', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d72004cb-8e58-4694-9a6e-7f8ee23b50d1', 'Cooking Club', 'NU Cooking Club is a place for those interested in the culinary arts. We explore different cultures and cuisines through fun cooking events. Come learn, cook, and eat with us!', 'NU Cooking Club is a place for those interested in the culinary arts. We explore different cultures and cuisines through fun cooking events. All skill levels are welcome; come learn, cook, and eat with us! - -Some events we plan on hosting include: - -- TV-show-style cooking competitions - -- Themed potlucks - -- Cooking demos/classes - -- Social outings/field trips - -- More fun ideas yet to come - -Feel free to join our Discord, Slack, or Mailing list. All our events will be announced through these channels! - -- Mailing List: https://forms.gle/9b7TKyWZwzRrdUby9 - -- Slack: https://join.slack.com/t/slack-0dp6908/shared_invite/zt-235mfootw-uGgwpPp7JpjBqdIt1iBZeg - -- Discord: https://discord.gg/q79tuWbDQP', '783', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('e1e3acda-e4d0-477d-b504-c84e9bd035f4', 'Critical Corporate Theory Lab', 'The CCT Lab is focused on highlighting the influence of corporate power on our everyday lives. We see the invisible hand of corporate power influencing students’ decisions for their careers - and their lives. We believe something must be done.', 'The Critical Corporate Theory Lab is focused on highlighting the influence of corporate power on our everyday lives. - -The Lab is a branch of the Harvard Critical Corporate Theory Lab, spearheaded by Professor Jon Hanson of Harvard Law School. We see the invisible hand of corporate power influencing students’ decisions for their careers - and their lives. This "hand" has become stronger, prevalent, and accepted - and we believe something must be done.', '210', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('f7ba90a7-6dc5-45ce-8297-c98eff5eb887', 'Crystal Clear', 'Crystal Clear is an inclusive community for students interested in Paganism, Spirituality, Astrology, crystals, tarot, and more. We provide a safe and supportive environment to explore and discuss Paganism, Neopaganism and Spirituality.', 'Crystal Clear is an inclusive community for students interested in Paganism, Spirituality, Astrology, crystals, tarot, and more. We explore the history and current context of various Pagan beliefs and the incorporation of Pagan practices into our own. By facilitating meaningful discussions that promote cultural awareness and critical thinking, and providing resources and support, we encourage community building within the Spirituality space on campus, and overall provide a communal space to practice and learn about (Neo)Paganism.', '856', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('e9acd08e-38f7-4605-95f1-2f2f5489a85e', 'CTF Club', 'Our club cultivates a cybersecurity community for hands-on learning, and friendly competition through cybersecurity capture-the-flag (CTF) events and workshops focused on real-world skills development.', 'Our club aims to foster a vibrant community of cybersecurity enthusiasts who want to hone their hands-on, technical skills and knowledge in the field. Our mission is to provide a platform for learning, collaboration, and friendly competition through hosting cybersecurity capture-the-flag (CTF) workshops and contests. CTF competitions simulate real-world scenarios where participants must discover and exploit vulnerabilities in systems, networks, or applications.', '985', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b2acdd0b-da3d-4b1a-a6d5-6aa1b2150289', 'Dermatology Interest Society', 'DermIS is a collaborative group for Northeastern students interested in skincare and dermatology. At our regular meetings, we discuss and sample various skincare products, chat with experts in the field, and learn about dermatological conditions.', 'Welcome to the Dermatology Interest Society (DermIS), a vibrant community tailored for Northeastern students passionate about skincare and dermatology! Dive into the world of healthy skin with us as we come together at our engaging meetings to explore a variety of skincare products, mingle with industry experts, and delve into the fascinating realm of dermatological conditions. Whether you are a seasoned skincare enthusiast or just starting your journey, DermIS offers an inclusive space where curiosity, learning, and camaraderie thrive. Join us to experience the perfect blend of fun and knowledge in the pursuit of radiant skin health!', '552', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6cb566a6-7812-445a-8f80-521fcef25773', 'Digital Health Club', 'Digital Health Club (DHC) focuses on enhancing awareness about the increasing role of digital health in modern healthcare. We aim to create a dynamic and informed community through three pillars: clinical, entrepreneurship/collaboration, and networking.', 'Welcome to DHC! - -We are a student-led organization dedicated to raising awareness and fostering innovation of digital health in the field of modern healthcare throughout the Northeastern community. - -Our approach includes publishing insightful blog articles on the latest digital health technologies, their impact on patient care, and advancements in medical diagnostics and treatments. We also aim to strengthen innovation and collaboration skills through active participation in competitions and taking initiative in projects. Lastly, we organize guest speaker events and Q&A sessions to provide unique opportunities for members to interact with and learn from experienced professionals in the field. - -Join DHC and be at the forefront of digital healthcare innovation, expand your professional network, and influence the future of health technology. ', '291', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('f6469144-438d-4c29-9766-f19be7a813d6', 'Emerging Markets Club ', 'The Emerging Markets Club is an organization with the mission to educate and collaborate with students to teach them more about the increasing relevance and importance of emerging markets within the economic and financial world. ', 'The Emerging Markets Club is an organization with the mission to educate and collaborate with students to teach them more about the increasing relevance and importance of emerging markets within the economic and financial world. We seek to accomplish this goal through providing students with unique opportunities to widen their understanding of emerging markets. Some of these opportunities include exclusive speaker events, hosted in collaboration with other adjacent organizations, engaging lectures hosted by club leaders and members, networking events to put members in touch with real players in the emerging markets world, and researching opportunities to deepen one''s understanding of emerging markets experientially. ', '90', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a3b62d86-ceeb-4172-9e2d-2c24849ce4f3', 'Fellowship and Manhood', 'To provide a platform for Black men on campus to come together, foster - -brotherhood, and strengthen each other through the values of brotherhood, - -manhood, and family. - -', 'Fellowship and Manhood is a welcoming sanctuary for Black men on campus to unite, building strong bonds of brotherhood while nurturing values of respect, responsibility, and resilience. Through a supportive community, members find a place to share experiences, seek guidance, and grow together in pursuit of personal and collective excellence. Whether engaging in lively discussions, meaningful activities, or simply enjoying each other''s company, Fellowship and Manhood empowers its members to embrace their true potential as leaders, mentors, and pillars of strength within their families and society.', '224', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('325d2e39-4d63-4bda-8e6d-be0669951dab', 'First Generation Investors Club of Northeastern University', 'FGI Northeastern is the Northeastern University chapter of a non-profit 501(c)(3) organization that teaches high school students in underserved communities the power of investing and provides students with real money to invest.', 'First Generation Investors Club of Northeastern University (FGI Northeastern) is the Northeastern University chapter of First Generation Investors, a non-profit 501(c)(3) organization. Our program leverages a network of intelligent and civic-minded Northeastern students to serve as tutors. We share our financial literacy and investing skills with high school participants across an eight-week program, including lessons in personal finance, the basics of stocks/bonds, diversification/market volatility, and compound interest, among other things. - -Through our intensive coursework, high school students form sophisticated analytical skills when looking at different types of investments. At the conclusion of our program, the student participants present their capstone projects, which break down their investment rationale and asset allocation of a $100 investment account. They invest in a mix of stocks, bonds, mutual funds, and index funds using an account opened in their name and funded by corporate partners. When they graduate from high school and turn 18, the account is transferred to them and serves as the initial seed for their future in investing.', '876', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('f547f70a-c0d7-4819-af01-3a60c87887f1', 'Ghanaian Student Organization', 'The GSO at Northeastern University is a welcoming community focused on celebrating and promoting Ghanaian culture. Our mission is to create a space where students from all backgrounds can come together to appreciate the richness of Ghana.', 'The GSO at Northeastern University is a welcoming community focused on celebrating and promoting Ghanaian culture. Our mission is to create a space where students from all backgrounds can come together to appreciate the richness of Ghana.', '760', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('11920fef-97cb-459d-925d-3278273af5fd', 'Google Developer Students Club - Northeastern', 'Our goal is to create Impact, Innovate and Create. Impact students and empower them to - -impact their communities through technology. ', 'Our goal is to create Impact, Innovate and Create. Impact students and empower them to impact their communities through technology. The Google Developers Student Club (GDSC) will host information sessions, hands-on workshops, and student-community collaborative projects centered around the latest and greatest in technology, all with the support of Google and Google Developers. - -The GDSC will enhance the educational, recreational, social, or cultural environment of Northeastern University by being inclusive to all students, by transferring knowledge to students, by forging closer relationships between students and local businesses in the community, and by promoting diversity in the tech community.', '1014', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('64187513-b253-4146-b8f4-3f054e006c0f', 'Graduate Biotechnology and Bioinformatics Association', 'Graduate Biotechnology and Bioinformatics Association is mainly focused on providing a - - platform to students which enables them to connect and interact with their peers in the - - program as well as industry professionals', 'We aim to be an extended resource to the students as academic liaisons. Our association also plans to engage with Biotech/Bioinfo students in discussions, case studies, and career development sessions which will add to their portfolio.', '511', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('1f6a6680-7f92-4dfa-852a-35a60a680e2c', 'Graduate Female Leaders Club', 'The Female Leaders Club was formed to connect graduate-level women with one another and congruently with other female leaders in various industries.', 'The mission is to build a community of current students and alumni as we navigate the graduate-level degree and professional goals post-graduation. We aspire to fulfill our mission by hosting speaking events with business leaders, networking in person and through virtual platforms, and providing workshops to foster professional growth.', '442', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('ae05ed0d-760d-4d49-b9f8-f3c8c511f673', 'Habitat for Humanity Northeastern', 'Habitat for Humanity Northeastern is a student-run chapter that works under the Greater Boston Habitat for Humanity Organization. We work to build affordable housing in Greater Boston for people suffering from housing instability.', 'Habitat for Humanity is a non-profit organization with a global mission to address the critical issue of affordable housing. Founded on the belief that everyone deserves a safe, decent place to live, Habitat for Humanity mobilizes communities, volunteers, and resources to build and repair homes for families in need. This organization operates on the principle of "sweat equity," where homeowners actively contribute their own labor alongside volunteers, fostering a sense of ownership and empowerment. Through partnerships with individuals, corporations, and governments, Habitat for Humanity strives to break the cycle of poverty and improve lives by providing stable housing solutions. Student chapters work under their greater affiliate to meet the needs of their organization.', '420', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('97359b9b-cee4-4e58-866b-f67907bd4415', 'Haitian Student Unity (HSU)', 'Haitian Student Unity (HSU) strives to promote the Haitian culture throughout Northeastern University and its surrounding communities. It is our goal to be a vessel for Haitians and Non-Haitians to foster collaboration & share in Haiti''s rich culture!', 'Haitian Student Unity (HSU) is a vibrant community at Northeastern University dedicated to celebrating and embracing the beauty of the Haitian culture. Our mission is to create a warm and inclusive space where both Haitians and Non-Haitians come together to learn, share, and appreciate all that Haiti has to offer. Through various events, discussions, and cultural initiatives, HSU aims to be a bridge for connection, understanding, and unity among individuals who share a passion for the richness of Haiti''s heritage.', '411', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('c65f0dfb-ffbc-4a57-a59c-b8a421036017', 'Half Asian People''s Association', 'HAPA is a community to explore and celebrate the mixed-race Asian experience and identity.', 'Hapa: “a person who is partially of Asian or Pacific Islander descent." We are a vibrant and supportive community centered around our mission of understanding and celebrating what it means to be mixed-race and Asian. - -Join our Slack: https://join.slack.com/t/nuhapa/shared_invite/zt-2aaa37axd-k3DfhWXWyhUJ57Q1Zpvt3Q', '692', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('2435dc72-d4a5-4606-81ea-77dda195dd4b', 'Health Informatics Graduate Society of Northeastern University', 'The primary focus of the Health Informatics Graduate Society centers around our mission to cultivate a vibrant community of graduate students dedicated to advancing the field of health informatics.', 'Welcome to the Health Informatics Graduate Society of Northeastern University! Our club is a gathering place for graduate students passionate about advancing the field of health informatics. We strive to create a vibrant community where members can share knowledge, collaborate on innovative projects, and network with industry professionals. Join us as we work together to enhance our understanding of healthcare technology and make a positive impact on the future of healthcare systems.', '39', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('7530b744-7467-4556-a6a1-6d7def71452b', 'Hear Your Song Northeastern', 'Hear Your Song NU is a subsidiary chapter of Hear Your Song, with its mission and purpose being to bring collaborative songwriting to kids and teens with chronic medical conditions. ', 'Hear Your Song NU is a subsidiary chapter of Hear Your Song, with its mission and purpose being to bring collaborative songwriting to kids and teens with chronic medical conditions. It will facilitate connections with local hospitals and organizations, perform all areas of music production and music video production, participate in trauma-informed training, and organize events and initiatives to further promote the therapeutic value of the arts.', '380', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('006ac5f3-a924-478e-96ee-81c89ee5b0a2', 'Hearts For The Homeless NEU', 'The mission of H4H NEU is to contribute to the health and well-being of one of the most vulnerable populations in our nation through free blood pressure screenings, education, and outreach opportunities for students who wish to contribute to our efforts.', 'Hearts for the Homeless NEU is an organization that provides free and informative heart health education events. The organization’s members provide electronic blood pressure machines and heart health information approved by the American Heart Association to the homeless in boston.', '897', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5aa9d717-c2d9-449b-9f5f-31651e0bb833', 'Hospitality Business Club', 'The Hospitality Business Club merges hospitality with business, exploring the blend of investments, design, real estate, and cuisine. Join us to unravel how hospitality shapes success across sectors. Interested? Reach out to join the exploration.', 'The Hospitality Business Club is an exciting space where the intricate connections between hospitality and business are explored and celebrated. We delve into the seamless amalgamation of investments, design, real estate, cuisine, and more to showcase how hospitality plays a pivotal role in the broader business landscape. Far beyond just a service industry, hospitality shapes experiences and drives success across various sectors. As a member, you''ll have the opportunity to engage with a like-minded community passionate about unraveling the complexities of this unique intersection. Our events, discussions, and collaborative projects aim to provide valuable insights into how hospitality functions within the broader scope of business. Whether you''re a seasoned professional, an entrepreneur, a student, or an enthusiast, the Hospitality Business Club welcomes all who seek to understand and contribute to the fascinating synergy between hospitality and business.', '332', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('2c410248-ebe5-4eff-a6a7-f3e24d7a388b', 'Huntington Strategy Group', 'Huntington Strategy Group', 'Huntington Strategy Group is the Northeastern''s student-led strategy consultancy for non-profits and social organizations. Our mission is to ensure that nonprofits and social enterprises committed to education, health, and poverty alleviation can reach their full potential by meeting their demand for high-quality strategic and operational assistance, and in so doing developing the next generation of social impact leaders. Making an impact is a mutually beneficial process. We hope to provide leading-edge consulting services to social enterprises in the greater Boston area, and in turn, academic enrichment and professional opportunities for our peers through fulfilling client work and corporate sponsorships.', '962', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('63f14e5f-340f-44c8-be84-c148f72647f2', 'Husky Hemophilia Group', 'HHG’s mission is to support people with bleeding disorders and those with loved one''s bleeding disorders in research, education, and advocacy. ', 'HHG’s mission is to support people with bleeding disorders and those with loved one''s bleeding disorders in research, education, and advocacy. Bleeding disorders can be hereditary or acquired, where patients are unable to clot properly. In order to advocate for accessible healthcare for bleeding disorders, we as a chapter hope to educate the Northeastern and Massachusetts community in raising awareness for bleeding disorders. Welcome to our community!', '651', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('46c1522e-160f-475e-b063-cf263210b4fd', 'IAFIE Northeastern University Chapter ', 'International Association for Intelligence Education (IAFIE): To serve as a local organization for Intelligence and associated professionals to advance research, knowledge, partnerships, and professional development. - -', 'To serve as a local organization for Intelligence and associated professionals to advance research, knowledge, partnerships, and professional development. ', '195', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('889424c8-db97-415e-a3fd-879e1b348c82', 'If/When/How: Lawyering for Reproductive Justice at NUSL ', 'If/When/How mobilizes law students to foster legal expertise and support for reproductive justice. We integrate reproductive rights law and justice into legal education and build a foundation of lasting support for reproductive justice. ', 'If/When/How: Lawyering for Reproductive Justice at NUSL mobilizes law students to foster legal expertise and support for reproductive justice. It integrates reproductive rights law and justice into legal education to further scholarly discourse and builds a foundation of lasting support for reproductive justice within the legal community. The vision is reproductive justice will exist when all people can exercise their rights and access the resources they need to thrive and to decide whether, when, and how to have and parent children with dignity, free from discrimination, coercion, or violence. If/When/How values (1) dignity: all people deserve to be treated with respect and dignity for their inherent worth as human beings in matters of sexuality, reproduction, birthing, and parenting; (2) empowerment: those with power and privilege must prioritize the needs, amplify the voices, and support the leadership of those from vulnerable, under-served, and marginalized communities; (3) diversity: our movement will be strongest if it includes, reflects, and responds to people representing various identities, communities, and experiences; (4) intersectionality: reproductive oppression is experienced at the intersection of identities, conditions, systems, policies, and practices; and (5) autonomy: all people must have the right and ability to make voluntary, informed decisions about their bodies, sexuality, and reproduction.', '449', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('86596efb-e351-44b1-b765-54f292cc8159', 'Illume Magazine', 'Illume Magazine is a student-run publication at Northeastern University centered around all Asian-American and Asian/Pacific Islander experiences experiences, identities, and diasporas.', 'Illume Magazine is a student-run publication at Northeastern University devoted to the critical thought, exploration, and celebration of Asian-American and Asian/Pacific Islander experiences, stories, issues, and identities across all diasporas. - -Our magazine writes on Lifestyle & Culture, Political Review, while also accepting Literary Arts submissions.', '839', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('fd7ed185-e0d8-4a32-b287-35fb8b70fe6a', 'inCrease', 'inCrease is an origami-focused organization where anyone can learn to fold paper! Join to pick up a new hobby, get help folding models, or work on designing your own!', 'Join inCrease to learn more about origami! - - - -We are a group of students that share the hobby of paperfolding, from a mix of all skill levels. No experience is necessary to leave your first meeting having folded something! - - - -Whether you have been folding for years, want to pick this up as a hobby, or are just curious to see what is possible through paperfolding, come check us out! - - - -We currently have meetings on Mondays at 7 PM ET in Hastings 109, starting on January 22nd, 2024. - - - -We are also planning on hosting and planning special events and topics such as: - -▪ A workshop on making your own double tissue paper - -▪ Collaborating with other origami clubs at other schools - -▪ Working on collaborative models with parts folded by all members - -▪ Showcasing the work of our members at the end of each semester', '949', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('ee941f33-6952-449c-a214-228f399a770f', 'Indian Cultural Association', 'ICA’s mission is to provide a community for all Indian students across the Northeastern campus. Serving as a bridge between international students and Indian Americans, this club will foster dialogue and a sense of unity between the two groups.', 'ICA’s mission is to provide a community for all Indian students across the Northeastern campus. Serving as a bridge between international students and Indian Americans, this club will foster dialogue and a sense of unity between the two groups, by providing the resources for students to experience and learn about Indian culture during our meetings. Furthermore, our weekly meetings will help to familiarize members with modern India and evolving culture through movie nights and chai time chats. In addition, we will pair first-year international students with local students to help them acclimate to the new environment and to provide exposure to modern Indian culture for local students. ICA is Strictly an Undergraduate Club. ', '695', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('2e0ce696-d366-4ede-8cfc-c3413f567c51', 'International Society for Pharmaceutical Engineering', 'The ISPE Student Chapter provides education, training, and networking opportunities referent to the biotechnology and pharmaceutical industry to graduate students, but also welcomes undergraduate students who want to participate in different activities. ', ' - -', '961', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a1921f1d-f7e7-4c3d-b4da-3669172ff1e9', 'KADA K-Pop Dance Team', 'KADA K-Pop Dance Team aims to empower & connect it''s members through dance, exciting events, & shared passions. By creating inclusive learning environments, we hope to give members a fun, flexible space to grow their dance & performance abilities.', 'Founded in 2019, KADA is Northeastern University''s first and only undergraduate K-Pop Dance Team, celebrating Korean popular culture through dance and offering a space for those looking to grow their dance skills. KADA has won Best Student Organization at Northeastern’s Dance4Me charity competition 3 years in a row and has worked to spread appreciation for Asian arts at a variety of other cultural events. With goals based in inclusivity, empowerment, and growth, we strive to create learning environments for all levels of dancers and drive connection through exciting events, shared passions, and an all-around fun time. From workshops, to rehearsals, to performances and projects, we want to create a space for members to to become stronger as both performers and leaders. ', '650', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('8fbb2d83-09fe-4269-9a10-16f082cbc067', 'LatAm Business Club', 'Fostering a vibrant Latin American community, while creating an entrepreneurial environment for business development, professional growth, and geopolitical dialogue. ', 'Welcome to the LatAm Business Club, a dynamic hub fostering a vibrant Latin American community. We strive to cultivate an entrepreneurial environment that encourages business development, facilitates professional growth, and sparks insightful geopolitical dialogue. Join us in building valuable connections, exchanging ideas, and collaborating towards success in the diverse landscape of Latin American business.', '953', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('578da4f2-2b3c-4e2c-91e0-966ea85580d7', 'Letters of Love Northeastern', 'LOL NEU is a chapter of Letters of Love and its mission is to let every child facing health concerns know they are loved, supported and never alone. Letters of Love makes and distributes cards to children’s hospitals across the country.', 'LOL NEU is a chapter of Letters of Love and its mission is to let every child facing health concerns know they are loved, supported and never alone. Letters of Love makes and distributes cards and other support items to children’s hospitals across the country. ', '705', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('0968bde1-e0b5-4425-bfdb-8682a70038b7', 'Malaysian-Singaporean Student Association', 'A vibrant and inclusive community for Malaysian and Singaporean students (or individuals interested in either culture) that provides a comforting sense of home away from home.', 'Welcome to the Malaysian-Singaporean Student Association! We are a vibrant and inclusive community dedicated to bringing together Malaysian and Singaporean students, as well as individuals interested in experiencing the richness of our cultures. Our association serves as a comforting space for members to find a sense of home away from home, fostering friendships, cultural exchanges, and exciting events that celebrate our heritage and traditions. Join us in creating lasting memories and connections while embracing the warmth and diversity of our shared heritage!', '365', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('c9dd5836-8c0c-444a-a85e-1bb2d362fa25', 'Malhar', 'Malhar is an undergraduate Indian classical dance team that hopes to spread awareness of Indian culture and traditions through the art of dance and provide a platform for dancers to perform for the community. ', 'Malhar is an undergraduate Indian classical dance team that hopes to spread awareness of Indian culture and traditions through showcasing these ancient art forms. We represent several different Indian classical dance styles including Bharatanatyam, Kuchipudi, and Kathak, and are open to the various other classical forms as well. Malhar stays true to the traditions of classical Indian dance while also incorporating modern elements to create engaging performances. - -We hold tryouts each semester and perform at a variety of events and venues both on and off campus. ', '229', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('73956459-f909-4dbc-a9d7-fda4e2d6b521', 'Menstrual Equity at Northeastern', 'Our club has three pillars: education, advocacy, and service. We aim to help decrease period poverty in the Greater Boston area by running menstrual product drives, workshops, and destigmatizing menstruation.', 'Our proposed organization will be called the “Menstrual Equity Club,” which will work to address period poverty in Boston, and beyond through spreading awareness and spearheading menstrual health-related events. This is pertinent as one in seven menstruators in Boston face period poverty, meaning they are unable to afford menstrual products. This is very dangerous as it could have severe adverse health consequences including reproductive issues, urinary tract infections, and mental health impacts. We must address this issue and engage the Northeastern community to create a sustainable impact on our campus, our community, and on a global scale. Our organization will have three pillars: service, education, and advocacy (SEA). We plan to do this by holding drives that allow community members to donate period products to distribute in the Roxbury community. The organization will hold informative workshops to teach students about the importance of menstrual equity in the community and how we can best support the menstrual health of our community members, especially those of low socioeconomic status who face heightened risks of period poverty, people who face homelessness, and in prison systems. The goal of this is to decrease the stigma that is associated with discussing menstruation. We also will hold events that will empower students to share their own experiences with menstrual equity and brainstorm potential ways to decrease period poverty within the community. This organization will also join the Massachusetts Menstrual Equity Coalition (MME), allowing a greater network of resources aimed at decreasing period poverty along with showing student support for the “I AM Bill.” The I AM Bill will ensure “access to free menstrual products, without stigma, to all menstruating individuals in all public schools, homeless shelters, prisons, and county jails”(MME) Furthermore, the MME has worked with various Boston-based universities, including Boston University, and has vast experience empowering student organizations focused on combating period poverty. The intended audience for this organization is individuals who are passionate about menstrual equity and want to be involved in increasing education and reducing period poverty in our community. ', '933', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('4031a438-5d75-484e-b2ea-47989cf09970', 'Music Production Club', 'A club for beginner and advanced music producers to share their music, get feedback, and learn about music production.', 'The music production club is a place for students producing any genre of music to meet, share their music and techniques, and learn from other students. We hold two weekly meetings. The first is more oriented towards beginners (although also completely open to advanced members), and focuses on teaching the basics of music production and answering production questions. The second type of meeting is more oriented towards advanced members, and consists mainly of WIP (work in progress) share and feedback exchange. We also hold various music production contests, such as sample flip contests and holiday themed contests. If you are interested, please join our organization right here on engage and reach out via email! - -Feel free to join our Discord server as well!', '933', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('8bc2a8d9-fcba-496f-a8d3-f79f666f353b', 'NAAD (Northeastern A Cappella Association for Desi Music)', 'NAAD (Northeastern A Cappella Association for Desi Music) embodies the profound resonance of South Asian music. Join us on a cultural journey as we bring the rich tapestry of South Asian music to the A Cappella sphere at Northeastern University!', 'Naad literally means “sound”, but in philosophical terms it is the primordial sound that echoes through the universe, the vibration that is believed to have originated with its creation and has been reverberating through our very being ever since. Therefore, it is considered as the eternal Sound or Melody. NAAD which is our acronym for Northeastern A Cappella Association for Desi Music will be focused on bringing music lovers of South Asian music together. There are different types of music that originated in South Asia like hindustani classical, ghazal, qawali, carnatic music and so on. This will also bring South Asian music to the A Cappella sphere in Northeastern University. The club will consist of musicians from different south asian countries (Afghanistan, Bangladesh, Bhutan, India, Maldives, Nepal, Pakistan, and Sri Lanka) which will be reflected in our music and in our performances. ', '1003', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5b0abf55-2806-47d2-a95f-f8c411290df7', 'Naloxone Outreach and Education Initiative', 'Our club aims to educate Northeastern students, and surrounding community members on opioid emergencies, and how to use naloxone. We aim to increase access to naloxone and other harm reduction tools in our community. ', 'The Naloxone Outreach and Education Initiative is an organization dedicated to educating Northeastern students, and surrounding community members on the opioid public health crisis, opioid emergencies, and reversing an opioid overdose using naloxone in order to save a life. We also aim to increase awareness of the opioid crisis, and oppose the stigma surrounding addiction, opioid use, and seeking treatment. We offer free training sessions, naloxone, fentanyl test strips, along with other resources. The hope of this program is to ultimately increase preparedness for these emergencies, as they are occurring all around us, while also changing the way our community thinks about drug use, addiction, and treatment.', '181', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('184eb718-75ae-493c-9d24-73143942e41f', 'Network of Enlightened Women at Northeastern', 'NeW is a women driven organization which focuses on professional development, the discussion of ideas, and fostering a community. We are like minded women who are open and willing to explore cultural and political issues, often in a conservative light.', 'The Network of Enlightened Women educates, equips, and empowers women to be principled leaders for a free society. NeW is a national community of conservative and independent-minded women from all sectors and backgrounds, passionate about educating, equipping, and empowering all women. - - - -NeW serves as a thought leader, promoting independent thinking and providing intellectual diversity on college campuses and in public discussions on women, policy, and culture. - - - -This NeW chapter intends to bring together women for fun meetings, discussions on current events, professional development training, and service/volunteer work. The chapter helps women find friends on campus, learn something, and build their resumes. - - - -The three goals of NeW are to create a network of conservative women on campus and beyond, to become more educated on conservative issues and educate others, and to encourage more women to become leaders on campuses and in the community. - - - -NeW cultivates a vibrant community of women through campus chapters, professional chapters, and our online presence that emboldens participants to confidently advocate for pro-liberty ideas in their schools, workplaces, homes, and communities. - - - -NeW also connects program participants with career-advancing professional opportunities. - - - -NeW trains pro-liberty women to serve as leaders through campus sessions, national conferences, leadership retreats, and professional development programs.', '858', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d1600f1e-31cf-4370-8b48-c852eecff9ad', 'Northeastern University Physical Therapy Club', 'The Physical Therapy Club serves to enhance the professional development of students in the Physical Therapy program by organizing and participating in educational, social, and other charitable events.', 'The Physical Therapy Club serves to enhance the professional development of students in the Physical Therapy program by organizing and participating in educational, social, and other charitable events. The NEU PT Club is a student organization that works intimately with the Physical Therapy Department to sponsor the William E. Carter School Prom, host wellness events during National Physical Therapy Month, support the APTA Research Foundation, provide physical therapy-related community outreach opportunities and host social gatherings to help physical therapy majors from all years get to know each other. The Club also sponsors attendees at the APTA''s National Conferences yearly, schedules guest lectures, and provides social networking opportunities for all NEU Physical Therapy majors.', '827', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('3709674c-2428-4c9b-aba0-b6384f3d472a', 'null NEU', 'null NEU at Northeastern University promotes cybersecurity education and innovation through events, projects, and resources. Recognized by Khoury College, we welcome students passionate about security. Join our mission to create a safer digital world.', 'Welcome to null NEU, the cybersecurity hub at Northeastern University. As the official student chapter of the renowned null community, we stand at the forefront of cybersecurity education, collaboration, and innovation within the dynamic environment of the Khoury College of Computer Sciences. Our commitment is to learn about security and live it, shaping the future of digital safety one project at a time. - - - -Who We Are - -null NEU is more than an organization; we are a movement. Driven by student leadership and recognized by esteemed faculty, our mission is threefold: to elevate security awareness across campus, to build a centralized repository brimming with cutting-edge security knowledge, and to push the boundaries of traditional security research into new and uncharted territories. - - - -Get Involved - -Cybersecurity is a vast ocean, and there''s a place for everyone in null NEU. Whether you''re taking your first dive into security or you''re already navigating the deep waters, we offer a plethora of opportunities to engage, learn, and contribute: - -- Participate in Our Events: From workshops to guest lectures and hackathons, our events are designed to expand your knowledge and network. - -- Contribute Your Skills: Have a knack for coding, research, or design? Our ongoing projects need your expertise. - -- Leverage Our Resources: Access our curated content and learning tools to advance your cybersecurity journey. - - - -Stay Connected - -The digital world is our playground, and we''re active across several platforms. Connect with us on LinkedIn for professional networking, join our Mastodon community for lively discussions, follow our Instagram for a visual tour of our activities, and stay updated with our Twitter feed for real-time engagement.', '277', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('21a2aaae-cc07-4c34-bc6c-2730e3d545f8', 'Perfect Pair at Northeastern University', 'NU Perfect Pair is a chapter of a national non-profit and it has a mission of fostering one-on-one, intergenerational connections between seniors and college students to combat experiences of social isolation and improve general well-being. ', 'NU Perfect Pair fosters intergenerational connections between seniors and college students in the hopes of countering isolation and loneliness in assisted living communities around the local Boston area. This endeavor is grounded in a commitment to reinforce a profound sense of community and purpose for the pairings, while simultaneously enhancing the overall health and well-being of the local senior demographic. - - - -The organization’s mission is accomplished through personalized matches between one older adult and one college student, taking into account shared backgrounds and mutual interests to ensure an authentic bond. Through weekly meetings and tailored programming, pairs engage in meaningful activities that provide mutual benefits, rekindling seniors’ passions and offering mentorship opportunities for students. - - NU Perfect Pair strives to raise awareness of the senior experience, challenge age-related stereotypes, and welcome new ideas that support the organization and the community it serves.', '374', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('f1ac80bc-e361-4952-8978-8354d21e4ae9', 'Poker Club', 'We host regular Poker games for players of all skill levels, completely free-of-charge with prizes! We also host regular workshops and general meetings for members to learn more about how to play Poker. Follow us for more on Instagram! @nupokerclub', 'Northeastern Poker Club is a student organization for students to play and learn more about Poker on campus. We host regular Poker games on campus, regular workshops and general meetings for members to learn more about how to play Poker. - -We''re welcome to poker players of all skill levels. We strictly operate on a non-gambling basis, thus, all of our Poker games are free-of-charge and we give out regular prizes through our Poker games! - -We also participate in the PokerIPA tournament, where the best of the club get to play against top Poker players in colleges around the world for big prizes (learn more at pokeripa.com). ', '591', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('2bd54300-0c35-4215-acdc-996f79c65173', 'Queer Caucus', 'Queer Caucus is a student-run organization dedicated to supporting lesbian, gay, bisexual, transgender, queer, gender non-conforming, non-binary, asexual, genderqueer, Two-Spirit, intersex, pansexual, and questioning members of the NUSL community.', 'Queer Caucus is a student-run organization dedicated to supporting lesbian, gay, bisexual, transgender, queer, gender non-conforming, non-binary, asexual, genderqueer, Two-Spirit, intersex, pansexual, and questioning students, staff, and faculty at NUSL. QC seeks to offer a welcoming space for all queer individuals to connect with other queer students while mobilizing around issues of injustice and oppression. We seek to affirm and support our members who are Black, Indigenous, and people of color, as well as our members with disabilities. Through educational programming, campus visibility, and professional development, Queer Caucus seeks to maintain Northeastern University School of Law’s position as the “queerest law school in the nation.”', '324', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('c5ae7818-c950-4d00-9d31-896bdde44289', 'Real Talks', 'We''re a group that provides a space for students to connect and talk about real life issues and relevant social topics, and also enjoys fun times and good food!', 'Welcome to Real Talks! We''re a vibrant community dedicated to creating a safe and inclusive environment for students to engage in meaningful conversations about real life issues and relevant social topics. Whether you''re looking to share your experiences, learn from others, or simply enjoy good food and fun activities, our club offers a supportive space where everyone''s voice is valued. Join us for insightful discussions, new friendships, and memorable experiences that empower personal growth and foster connections that go beyond the campus grounds!', '723', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('58cb00dc-7f5a-4dc3-86ff-fb5f8fcf67ed', 'Rhythm Games Club', 'We the Northeastern''s Rhythm Games Club provide a community where members can play and share their experience with Rhythm Games!', 'We are Northeastern''s Rhythm Games Club! - -Our goal is to bring people together through playing Rhythm Games. We have many different games and events where you can try out and test your rhythm and reaction skills! Please join our discord at https://discord.gg/G4rUWYBqv3 to stay up to date with our meetings and events. ', '150', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5d21ca30-045d-436d-9d50-9ca4e66ea184', 'Robotics Club of Northeastern University', 'Our goal is to de-mystify robotics. We provide a launchpad for learning about robotics and self-starting projects. Check out our website for more information! https://www.nurobotics.org/', 'Our goal is to demystify robotics! NURobotics provides a launch-pad for learning about robotics and self-starting projects. We are an umbrella organization that supports a variety of student-led robotics projects while fostering a passionate community through general meetings and events. We firmly believe that a commitment to learning matters more than accumulated knowledge ever could, and strive to equip our members with the resources they need. Our club''s lab space is located in Richards 440 where we are equipped with 3D printers, tools, resources, and other manufacturing capabilities to support our student projects.Discord is our club''s main source of communication. Once you get verified, pick the roles for the project you''re interested in. - -Click here to join our Discord! - -Additionally, check out our presentation from our Beginning of Semester Kickoff Meeting which will help you get a better understanding of what each of our 9 projects has to offer and meeting times: - -Kickoff Presentation Slides - - - -Advisors: Professor Rifat Sipahi & Professor Tom Consi', '222', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('76cd02fd-8eb4-4f0e-bdfe-b7ad7998524b', 'Scholars of Finance', 'Scholars of Finance is a rapidly growing organization on a mission to inspire character and integrity in the finance leaders of tomorrow. We seek to solve the world’s largest problems by investing in undergraduate students.', 'Scholars of Finance is a vibrant community dedicated to nurturing the next generation of finance leaders. With a strong focus on character building and integrity, we empower undergraduate students to explore the dynamic world of finance and develop essential skills for solving global challenges. Join us in our mission to inspire and innovate for a brighter financial future!', '539', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('9b2fb82e-a66f-4ab2-86f5-2820d76898e7', 'Sikh Student Association at Northeastern', 'We seek to foster a connection with faith for Sikh students. We encourage intercommunity, interfaith, and intercultural relationships to create an inclusive space and further the Sikh identity on campus. Our three pillars are Sikhi, Seva, and Sangat.', 'The Sikh Student Association at Northeastern seeks to foster a connection with faith for Sikh students on campus. The organization wants to encourage inter-community, inter-faith, and inter-cultural relationships to create a more inclusive space on campus. SSAN will participate in larger student body events in order to raise awareness of the presence of Sikhs on campus and deconstruct misconceptions about the Sikh faith, contributing to the safety of practicing Sikh students in the student body. - - - -The three pillars—Sikhi, Seva, and Sangat (translating to: Sikhi or learning/faith, service, and community)—help meet the spiritual needs of students on campus through visits to the Gurudwara, a Sikh place of worship, Kirtan Darbars on campus (bringing a faith service to campus), community service in the greater Boston area through organizations that need volunteers, and community building events. There will never be restrictions on who can join the organization as it is one of the fundamental tenets of Sikhi that everyone is welcome, no matter their background. We seek to ensure those in our community feel more at ease and feel a sense of belonging on campus. ', '943', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('7b2b7918-0324-4af5-a258-9da7299e7427', 'Somali Students Association', 'SSA’s goal is to serve Northeastern University’s Somali students and those in the NU community that are interested in Somalia. SSA is also formed with the intention of bringing to light Somalia’s culture and ethnicity to the campus wide audience and ra...', 'NEUSSA is a segway between institutions to promote uplift, and unite the Boston Somali community and work to foster connections between Somali college students. - - - -Our goal is to serve Northeastern University’s Somali students and those in the NEU community who are interested in Somalia. The organization is also formed to bring to light Somalia’s culture and ethnicity to the campus-wide audience and raise awareness about Somalia’s culture, politics, religion, and general history. - -In addition to this better campus-wide representation, NEUSSA is also formed to connect Somali college Students and create a forum to interact about the current and future state of Somalia. NEUSSA intends to endeavor in critical areas to this aforementioned mission: The first area is mentorship, we intend to establish a mentorship program for current and future NEU Somali students, and would also like to play a role as a motivator and role model for Boston Area Students (Middle & High Schools). The second area of critical interest is academic enrichment for NEU Somali Students and the at-large NEU Community about Somalia by hosting discussions and forums on issues relating to Somalia and the third and final critical area of interest is to engage the local Somali community on relevant Local Somali causes/issues.', '267', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('aa34fab0-e637-4e9e-b639-b802f38e1cb2', 'SPIC MACAY NU CHAPTER', 'The Spic Macay chapter of NU aimed at promoting Indian art forms.', 'Welcome to SPIC MACAY NU CHAPTER! We are a vibrant community dedicated to celebrating and promoting the rich tapestry of Indian art forms. Our mission is to ignite a passion for traditional music, dance, and cultural heritage among the students of NU. Through engaging performances, workshops, and interactive sessions, we aim to create a platform where everyone can immerse themselves in the beauty and diversity of Indian arts. Join us in exploring the mesmerizing world of classical and folk traditions, connecting with like-minded individuals, and fostering a deeper appreciation for the artistic legacy of India.', '875', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d78bd9d4-9898-49c1-a3e9-d7dbebf3854d', 'Tau Beta Pi, MA Epsilon', 'The Tau Beta Pi Association is the oldest engineering honor society. It honors engineering students in American universities who have shown a history of academic achievement as well as a commitment to personal and professional integrity.', 'Welcome to Tau Beta Pi, MA Epsilon! We are a prestigious engineering honor society that values academic excellence and personal integrity. Our mission is to recognize and honor outstanding engineering students in American universities who have demonstrated a strong commitment to both their studies and ethical values. By becoming a part of our community, you will have the opportunity to connect with like-minded peers, participate in professional development activities, and contribute to projects that make a positive impact in the engineering field. Join us in fostering a culture of excellence and integrity in engineering education and practice!', '200', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5e339489-2d81-42fe-b3d9-67aca6e58ade', 'The Libre Software Advocacy Group', 'The goal of our organization is to promote the digital freedom of all through the promotion of Libre Software Ideals. ', 'The Libre Software Advocacy Group is a vibrant community dedicated to championing digital freedom for all. Our main mission is to advocate for Libre Software Ideals, fostering a culture of open collaboration and innovation. Through workshops, seminars, and outreach programs, we strive to educate and empower individuals to embrace free and open-source software, enabling them to take control of their digital lives. Join us in our exciting journey towards a more open and inclusive digital world!', '837', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('ed6cd8c8-395a-4518-b088-297e242d1c12', 'The Sports Analytics Club', 'The Sports Analytics Club is a community where students from all - -disciplines come and learn about the wide ranging field of sports analytics. The club works to - -cultivate independent research as well as participate in national events.', 'The Sports Analytics Club is a vibrant community that welcomes students from various disciplines to explore the fascinating world of sports analytics. Here, members engage in learning sessions and discussions to delve into the diverse aspects of this field, from data analysis to predictive modeling. The club fosters a culture of independent research, empowering members to pursue their interests and contribute to the cutting-edge developments in sports analytics. Additionally, the club actively participates in national events, providing opportunities for members to showcase their skills and connect with industry professionals.', '876', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('530f76c7-f7d8-474e-b17b-746674fa2aab', 'The Wellness Project ', 'The Wellness Project aims to educate students about simple and healthy eating, all while implementing meal planning and effective budgeting strategies.', 'The Wellness Project is committed to educating students about simple and healthy eating, all while providing an environment that allows them to connect with like-minded individuals who share a common goal of prioritizing their health. We implement meal planning and effective budgeting strategies to introduce students to a sustainable way of eating that is both nourishing and affordable.', '57', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('8a7c1789-7b91-414a-b762-0c536c065b4f', 'The Women''s Network Northeastern', 'The Women''s Network is the largest collegiate women''s networking organization in the nation. There are over 100 chapters at universities across the United States, Canada, and soon Ireland!', 'The Women''s Network strives to cultivate and celebrate women''s ambitions through connecting members to industry leaders, professional development resources, and career opportunities. TWN Northeastern holds a variety of experiential events: speaker events, professional development workshops, networking trips, alumnae receptions, community-based discussions, and more. Being a part of TWN is a great way to authentically expand networks, build confidence, gain exposure to different industries, and discover new career opportunities. Joining TWN has opened doors for tens of thousands of women across the country! Fill out our membership form at bit.ly/jointwn and visit our instagram @thewomensnetwork_northeastern to view our upcoming events!', '141', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('47923cd1-c713-4375-8e3f-4ba05a965835', 'Undergraduate Law Review', 'The Undergraduate Law Review (NUULR) is Northeastern''s distinguished undergraduate legal publication. ', 'Established in 2023, the Undergraduate Law Review (NUULR) is Northeastern''s distinguished undergraduate legal publication. Committed to fostering intellectual discourse and scholarly engagement, NUULR publishes insightful legal scholarship authored by undergraduate students from diverse backgrounds. Our mission is to create a dynamic space where legal ideas are explored, discussed, and shared among the Northeastern University community and the broader public. Our culture is rooted in the values of objectivity, critical thinking, and interdisciplinary exploration, making NUULR a leading forum for undergraduate legal discourse, critical analysis, and academic fervor. - -If you interested in joining NUULR, then please fill out this form to be added onto our listserv: https://forms.gle/g1c883FHAUnz6kky6 - - ', '913', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('3a07882c-8ad3-4603-8874-deff6257c63f', 'United Against Trafficking', 'United Against Trafficking, is dedicated to educating, advocating, and taking concrete actions to combat all forms of human trafficking. We strive to create an environment where knowledge, activism, and compassion intersect to drive meaningful change.', 'United Against Trafficking is an organization dedicated to combating various forms of human trafficking, including sex trafficking, labor trafficking, and forced labor. Embracing the values of dignity and rights for all individuals, our mission centers on eradicating the horrors of trafficking and fostering a world where no one falls victim to such atrocities. Welcoming members from Northeastern University, including students, faculty, and staff, our aim is to build an inclusive and diverse community representing diverse academic disciplines and backgrounds. While our primary focus is within the university, we actively seek collaborations with local and national anti-trafficking entities, survivors, and advocates. Our initiatives span awareness campaigns, advocacy for policy reforms, community outreach, workshops, and training programs. Additionally, we engage in fundraising events to support frontline anti-trafficking efforts and foster collaborative partnerships to maximize impact. Furthermore, our organization encourages research projects aimed at enhancing understanding and driving evidence-based solutions. United Against Trafficking envisions a campus environment where knowledge, activism, and empathy intersect to create substantial change in the fight against human trafficking, aspiring to be a beacon of hope and progress in the global mission for a world free from exploitation and suffering. ', '591', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('0d1881f5-70d2-40e0-9bc0-c09bd5dfe4cf', 'United Nations Association at Northeastern', 'Through advocacy, discussion, and education, UNA Northeastern advocates for the UN Sustainable Development Goals and for US leadership at the UN, both our global and local community. ', 'The United Nations Association of the USA is a grassroots organization that advocates for US leadership at the United Nations (UN). With over 20,000 members and more than 200 chapters across the country, UNA-USA members are united in their commitment to global engagement and their belief that each of us can play a part in advancing the UN’s mission and achieving the Sustainable Development Goals (SDGs). As a campus chapter UNA Northeastern advocates for the UN SDGs locally and connects the mission and career opportunities of the UN to our community. - -We’re working to build a welcoming community of students who are passionate about international issues. As an organization we come together weekly to learn about and discuss international issues and advocate for change in our community. The SDGs cover a broad range of issues and our focus represents this. Some of our past events, beyond our weekly meetings, have included annual UN Day and Earth Day events, a clothing drive, volunteering in the community, meeting with our representatives, and trips to UN events in New York. ', '96', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5853cb38-3c73-4f76-a37a-4bfe9c7ff93d', 'Women''s Run Club', 'We are a non-competitive running organization that hopes to create an inclusive, welcoming environment on campus, with a focus on empowering, educating, and mentoring women. ', 'Women’s Run Club is a non-competitive running organization that hopes to create an inclusive, welcoming environment on campus, with a focus on empowering, educating, and mentoring women. WRC will host several fun events every semester such as group runs, informative meetings, and social events. Join us!', '734', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('22282392-c6ec-4695-a166-54707a4920eb', 'Women’s + Health Initiative at Northeastern', 'W+HIN is a safe space for all those interested to discuss and learn about disparities that exist in healthcare for women and people with uteruses and how to combat these. We spread this knowledge by producing a student written women''s health journal.', 'The purpose of this organization is to provide a safe space for all people with uteruses and other interested parties to discuss and learn about the disparities that exist in healthcare for women and how to combat these. Topics surrounding women’s health are often viewed as taboo, preventing people with uteruses from becoming fully aware of the issues they face and how they can care best for their health. This organization is meant to combat this struggle by increasing women’s health education on campus both within and outside of organizational meetings and contributing to women’s health efforts in the greater Boston area. The organization will spread this knowledge mainly by producing a student written journal each semester. ', '740', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6353fdfb-e795-4d78-8287-be296708db7f', 'Aaroh', 'Are you proud of your Indian roots? Aaroh is an undergraduate Indian music club with an aim to bring music lovers together with a focus on different types of music bringing musical diversity to the campus and giving students a platform to perform.', 'Aaroh is an organization that aims to bring music lovers together with a focus on the different types of Indian music; including but not limited to Bollywood, folk, fusion, Carnatic, and Hindustani classical with a focus on Indian origin instruments. - -We will be actively engaged in bringing musical diversity to the campus, giving students a platform to convene, discuss and perform.', '991', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('022fc6e0-2b9e-474b-b6e1-43f4f88cc350', 'Acting Out', 'Acting Out is Northeastern University''s only acting company dedicated to promoting social change through the work that it produces, events it holds, and discussions it facilitates. ', 'Acting Out is Northeastern University''s only acting company dedicated to promoting social change through the work that it produces, events it holds, and discussions it facilitates.', '798', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('01465118-26a2-4d8b-b4c4-826228f0b88e', 'Active Minds at NU', 'As a chapter of the national organization, Active Minds, Inc., Active Minds at NU strives to reduce the stigmas associated with mental health disorders and encourage conversation among Northeastern students about mental health. ', 'As a chapter of the national organization, Active Minds, Inc., Active Minds at NU strives to reduce the stigmas associated with mental health disorders and encourage conversation among Northeastern students about mental health. We are not a support group or peer counselors, but rather an educational tool and liaison for students. We aim to advocate for students and bring about general awareness through weekly meetings and programming. Drop by any of our events or meetings to say hi! :) - -Join our Slack! - -Check out our website!', '924', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('bdfaf92d-7741-4401-85d3-512f9cea5ce9', 'Addiction Support and Awareness Group', 'The mission of this organization is to create a community for people struggling with addiction and to educate the Northeastern community on this topic. You do not have to be dealing with addiction to join!', 'The mission of this organization is to create a community for people struggling with addiction and to educate the northeastern community on the topic. The National Institute on Drug Abuse has established that as of 2022, 20.4 million people have been diagnosed with a substance use disorder in the past year and only 10.3% of those people received some type of treatment. Massachusetts itself suffers from an opioid crisis, and more people have died from drug overdose in recent years than ever before. In the Boston-Cambridge-Quincy Area, the home of Northeastern, 396,000 people ages 12 or older were classified as having a substance use disorder in the past year, higher than the national rate (NSDUH Report). College students between ages of 18 and 22 particularly are at higher risk for struggling with substance use disorders. The National Survey on Drug Use and Health asked participants in this age group who were at college and who were not if they had used alcohol in the past month; college students'' "yes," answers were 10% higher than the group that was not in college. - - - - ', '888', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('43358f45-8bb2-4d5a-a555-7377f4abf416', 'AerospaceNU', 'This group is for anyone and everyone who wants to design and build projects with the goal of getting them in the air. Whether it''s rockets, unmanned aerial vehicles, quadcopters, or weather balloons, you can bet we''re building it and teaching anyone how', 'This group is for anyone and everyone who wants to design and build projects with the goal of getting them in the air. Whether it''s rockets, unmanned aerial vehicles, airships, quadcopters, or weather balloons, you can bet we''re building it and sending it soaring. This club supports multiple projects at a time, some of which compete against other schools, others are trying to break records, while others are just for research and fun. You don''t need to have any experience to join us! We are here to give students the opportunity to get their hands dirty and pursue projects about which they are passionate. Check out our website for more information and to get added to our emailing list!', '937', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('c9f58449-6a94-44c7-afc4-628cd7a0fc65', 'African Graduate Students Association', 'AGSA is dedicated to empowering African graduate students and enhancing their educational and personal experiences. ', ' - -The African Graduate Students Association at Northeastern University is dedicated to empowering African graduate students and enhancing their educational and personal experiences. Our purpose revolves around six core themes: community building, professional development, advocacy, global engagement, leadership empowerment, and cultural integration. Through these focused areas, we aim to support our members in achieving their academic and career goals, advocate for their needs, celebrate the rich diversity of African cultures, and foster a sense of unity and inclusion within the university and beyond. - - ', '445', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b6fda1b2-7120-452b-96f4-25054ad94389', 'afterHOURS', 'Afterhours is an extremely unique college entertainment venue located in the Curry Student Center at Northeastern University in Boston, MA. From state-of-the-art video and sound concepts to a full-service Starbucks Coffee, Afterhours programs almost ev...', 'Afterhours is an extremely unique college entertainment venue located in the Curry Student Center at Northeastern University in Boston, MA. From state-of-the-art video and sound concepts to a full-service Starbucks Coffee, Afterhours programs almost every night of the week and supports programming for over 200 student organizations!Come down to check out sweet music and grab your favorite Starbucks treat!', '1020', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('3f239dfb-8362-4f93-a54c-f8107e8ef2d7', 'Agape Christian Fellowship', 'We are Agape Christian Fellowship, the Cru chapter at Northeastern University. We are a movement of students loving Jesus, loving each other, and loving our campus. We currently meet at 7:30 EST on Thursdays- feel free to stop by!', 'We are Agape Christian Fellowship, the Cru chapter at Northeastern University. We are a movement of students loving Jesus, loving each other, and loving our campus. Our vision is to be a community of people growing in their relationships with Jesus, learning together, and encouraging one another.We currently meet at 7:30PM on Thursdays in West Village G 02 for our weekly meeting, and we''d love if you could stop by!', '4', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('634d8b37-550e-410c-b99c-d0fd966f3229', 'Alliance for Diversity in Science and Engineering', 'Our mission is to increase the participation of underrepresented groups (Women, Latinos, African-Americans, Native Americans, the LGBTQIA+ community, persons with disabilities, etc.) in academia, industry, and government. ', 'Our mission is to increase the participation of underrepresented groups (Women, Latinos, African-Americans, Native Americans, the LGBTQA community and persons with disabilities, etc.) in academia, industry, and government. ADSE supports, organizes, and oversees local, graduate student-run organizations that reach out to students and scientists of all ages and backgrounds. We aim to connect scientists across the nation, showcase non-traditional career paths and underrepresented minority experiences in STEM, and educate students at all levels about opportunities in the sciences. - - - -Please check out our Summer Involvement Fair Information Session at the belowlink to learn more about our organization and what we have to offer you thisyear: https://www.youtube.com/watch?v=ozYtnJDxSHc&t=750s ', '8', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('10f8b2a5-33fa-416f-9d84-6b9b7723ba2d', 'Alpha Chi Omega', 'The Alpha Chi Omega Fraternity is devoted to enriching the lives of members through lifetime opportunities of friendship, leadership, learning and service.', 'The Alpha Chi Omega Fraternity is devoted to enriching the lives of members through lifetime opportunities of friendship, leadership, learning and service.', '763', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('c8279222-aff2-46a7-9069-30f762fff748', 'Alpha Epsilon Delta, The National Health Preprofessional Honor Society', ' - -Alpha Epsilon Delta is a nationally recognized Health Preprofessional Honors Society. - -Please get in touch with us at northeasternaed@gmail.com if you are interested in applying. ', ' - -Alpha Epsilon Delta (AED) is the National Health Preprofessional Honor Society dedicated to encouraging and recognizing excellence in preprofessional health scholarship. Our Chapter here at Northeastern includes undergraduate students on the pre-med, pre-PA, pre-vet, pre-PT, and pre-dental tracks. We also have members who are interested in pursuing careers in research. Our biweekly chapter meetings consist of various activities, including focused discussions, student panels, and guest speakers'' lectures. Last semester, members also had the opportunity to attend CPR lessons, suture clinics and participate in club sponsored volunteer activities. - - - - - - - -Timeline: - - - - - -Applications will be sent out in both the Fall and Spring semesters for an Induction in November and January. If you have any questions, please email us at northeatsernaed@gmail.com. Thank you for your interest! - - - - - - - -Requirements to join: - - - - - -- Membership is open to students currently enrolled in chosen health professions, including careers in medicine (allopathic and osteopathic), dentistry, optometry, podiatry, veterinary medicine, and other health care professions requiring post baccalaureate study leading to an advanced degree. - - - - - -- Potential members must have completed at least three semesters or five quarters of health preprofessional studies work by the time of Induction with an overall cumulative GPA of at least 3.20 on a 4.0 scale (A = 4.00) and also with a cumulative GPA of 3.20 in the sciences – biology, chemistry, physics, and mathematics. - -- The Massachusetts Zeta chapter at Northeastern University will accept Associate Members. - -- Associate members will be considered full members of the Chapter but will not be formally inducted into it until they meet all the membership requirements. They will have access to all the events, meetings, panels, volunteer opportunities, and the mentorship program and can be elected into committee chair positions. However, they will not be able to run for full e-board positions until they have been inducted. - - - - - - - -Dues: - - - - - -Membership in Alpha Epsilon Delta is an earned honor for life. There will be no annual dues for returning members for the 2023-2024 academic year. However, there is a one time fee of $90 for newly inducted members which goes to the National Organization. The money sent to the National Organization covers lifetime membership and a certificate. - -', '625', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('f7002326-556e-47a4-9abe-498844fc6a33', 'Alpha Epsilon Phi', 'Alpha Epsilon Phi is a national sorority dedicated to sisterhood, community service and personal growth. AEPhi was founded at Northeastern University on May 6th, 1990, and to this day it continues to be a close-knit, compassionate community that foster..', 'Alpha Epsilon Phi is a national sorority dedicated to sisterhood, community service, and personal growth. AEPhi was founded at Northeastern University on May 6th, 1990, and to this day it continues to be a close-knit, compassionate community that fosters lifelong friendship and sisterhood. We seek to create an environment of respect and life-long learning through sister''s various passions, community service, and engagement with various communities. Above all else, Alpha Epsilon Phi provides a home away from home for college women and unconditional friendships that will last far beyond the time spent at Northeastern University.', '760', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('fb0657be-9b2e-4471-b90d-86c1c247a6b2', 'Alpha Epsilon Pi', 'Our basic purpose is to provide a comprehensive college experience for young men, fuel social and personal growth in our members, and create lasting friendships, mentorship, community and support for our diverse brotherhood', 'Our basic purpose is to provide a comprehensive college experience for young men, and create lasting friendships, mentorship, community and support for our diverse brotherhood. Alpha Epsilon Pi, predicated off of socially and culturally Jewish values, strives to strengthen each member''s strengths and helps them overcome their weaknesses, and emphasizes personal, professional and social growth. We believe our organization provides a unique opportunity that can not be found as easily through other mediums.', '848', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('c17df5f6-6bc1-4063-a0a9-1ef900406a1f', 'Alpha Kappa Alpha Sorority, Inc - Iota Gamma Chapter', 'Founded on the campus of Howard University in Washington, DC in 1908, Alpha Kappa Alpha Sorority is the oldest Greek-letter organization established by African American college-trained women. To trace its history is to tell a story of changing patterns...', 'Founded on the campus of Howard University in Washington DC in 1908, Alpha Kappa Alpha Sorority is the oldest Greek-letter organization established by African American college-trained women. To trace its history is to tell a story of changing patterns of human relations in America in the 20th century. The small group of women who organized the Sorority was conscious of a privileged position as college-trained women of color, just one generation removed from slavery. They were resolute that their college experiences should be as meaningful and productive as possible. Alpha Kappa Alpha was founded to apply that determination. As the Sorority grew, it kept in balance two important themes: the importance of the individual and the strength of an organization of women of ability and courage. As the world became more complex, there was a need for associations which cut across racial, geographical, political, physical and social barriers. Alpha Kappa Alpha’s influence extends beyond campus quads and student interest. It has a legacy of service that deepens, rather than ends, with college graduation. The goals of its program activities center on significant issues in families, communities, government halls, and world assembly chambers. Its efforts constitute a priceless part of the global experience in the 21st century.', '886', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('640a7dea-8630-4aa1-8be8-940a336e359d', 'Alpha Kappa Psi', 'Alpha Kappa Psi is a professional fraternity that welcomes all individuals with interest in business and provides its members with world-class professional and leadership development opportunities. Learn more at http://www.akpsineu.org/', 'Alpha Kappa Psi is a professional fraternity that welcomes all individuals with interest in business and provides its members with world-class professional and leadership development opportunities. We focus on the values of ethics, education, and community leadership that are necessary to succeed in today''s evolving world. Learn more at http://www.akpsineu.org/. ', '867', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a561e329-6337-4ba9-ab92-e92b0b1f1a40', 'Alpha Kappa Sigma', 'Alpha Kappa Sigma, established here in 1919, is one of Northeastern''s only two local fraternities. We are a social fraternity open to anyone interested. Attend one of our fall or spring rush events for more information. Hope to meet you soon!', 'Alpha Kappa Sigma, established here in 1919, is one of Northeastern''s only two local fraternities. We are a social fraternity who place a strong emphasis on brotherhood, personal and professional growth, and creating lasting memories and lifelong friends. Attend one of our fall or spring rush events for more information. Hope to meet you soon!', '334', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('1e5fc4c7-78d8-4dbf-8612-bfd44c2bc113', 'Alpha Phi Omega', 'Alpha Phi Omega (APO) is a national co-ed service fraternity. We partner with over 70 community service organizations in Boston, foster a community of service-minded individuals, and promote leadership development.', 'Alpha Phi Omega (APO) is a national coeducational service organization founded on the principles of leadership, friendship, and service. It provides its members the opportunity to develop leadership skills as they volunteer on their campus, in their community, to the nation, and to the organization. As a national organization founded in 1925, Alpha Phi Omega is the largest co-ed service fraternity in the world, with more than 500,000 members on over 375 campuses across the nation. Alpha Phi Omega is an inclusive group, open to all nationalities, backgrounds, and gender. APO provides the sense of belonging to a group while also providing service to the community by donating time and effort to various organizations. Our chapter partners with varied and diverse nonprofits in the Boston area. Some places we volunteer include Prison Book Program, Community Servings, Y2Y, National Braille Press, and the Boston Marathon. We also foster community through fellowship and leadership events. - -https://northeasternapo.com', '188', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('8e72d3e3-ae92-4968-8ac7-57cd14fdc778', 'American Academy of Orthopedic Manual Physical Therapists Student Special Interest Group', 'Develop skills in manual physical therapy & enhance use of current evidenced based manual physical therapy. AAOMPT sSIG serves to supplement the existing didactic education in the physical therapy curriculum to best prepare students for their future.', 'The American Academy of Orthopaedic Manual Physical Therapy (AAOMPT) is an organization that fosters learning and research in orthopedic manual physical therapy. The student special interest group (sSIG) encourages students to develop skills in manual physical therapy and enhance their use of current evidenced based manual physical therapy. Since the curriculum is only able to provide an introduction to manual therapy, this organization serves to supplement the existing didactic education to best prepare students for their co-operative education, clinical rotations, and future career.', '292', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('efd81923-a8b2-4598-aa31-ffc0eefca530', 'American Cancer Society On Campus at Northeastern University', 'A student group on campus supported by the American Cancer Society that is dedicated to education raising awareness and bringing the fight against cancer to the Northeastern community. We do this in four major ways including; Advocacy, Education, Survi...', 'A student group on campus supported by the American Cancer Society that is dedicated to education raising awareness and bringing the fight against cancer to the Northeastern community. We do this in four major ways including; Advocacy, Education, Survivorship, and Relay For Life. - - - -We host many events throughout the year, including Kickoff, Paint the Campus Purple, a Luminaria Ceremony on Centennial Quad, Real Huskies Wear Pink, the Great American Smoke Out, and Relay For Life, in addition to attending off campus events.', '239', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6e4d26ee-29ea-4db1-a124-6bd2e237a24f', 'American College of Clinical Pharmacy Student Chapter of Northeastern University', 'The objective of the ACCP chapter at Northeastern University is to improve human health by extending the frontiers of clinical pharmacy. Our mission is to concentrate on helping students understand the roles and responsibilities of various specialties.', 'The objective of the ACCP chapter at Northeastern University is to improve human health by extending the frontiers of clinical pharmacy. Our mission: Concentrate on helping students understand the roles and responsibilities of various specialties of the clinical pharmacist Explore all the opportunities that exist for students as future experts in this field Provide leadership, professional development, advocacy, and resources that enable student pharmacists to achieve excellence in academics, research, and experiential education Advance clinical pharmacy and pharmacotherapy through the support and promotion of research, training, and education.', '133', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b64572a6-8c30-4d84-8828-0ab5a3719967', 'American Institute of Architecture Students', 'We are a resource to the students, the School of Architecture, and the community. We focus on providing students with more networking, leisure, and professional opportunities. We, the students, have the power to change the profession that we will enter.', 'The American Institute of Architecture Students (AIAS) is an independent, nonprofit, student-run organization dedicated to providing unmatched progressive programs, information, and resources on issues critical to architecture and the experience of education. The mission of the AIAS is to promote excellence in architectural education, training, and practice; to foster an appreciation of architecture and related disciplines; to enrich communities in a spirit of collaboration; and to organize students and combine their efforts to advance the art and science of architecture. Learn more at: aias.org. - -Freedom by Design (FBD) constructs small service projects in the chapter’s community. - -The Northeastern AIAS chapter offers many events throughout the school year that aim to meet the national mission. We host firm crawls that allow students to visit local firms in Boston and Cambridge to provide a sense of firm culture expectations and realities. It offers a mentorship program for upper and lower class students to meet and network, and provide a guide for lower class students as they begin in the architecture program. Northeastern’s chapter also host BBQ’s, game nights, and other architecture related events.', '244', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a660b03d-e5cf-4ea6-bf19-8373baab801a', 'American Institute of Chemical Engineers of Northeastern University', 'American Institute of Chemical Engineers is a national organization that caters to the needs of Chemical Engineers. The organization fosters connections between Undergraduate students, Graduate students and Professions in the Chemical Engineering field', 'American Insitute of Chemical Engineers is a national organization that caters to the needs of Chemical Engineers. The organization fosters connections between Undergraduate students, Graduate students and Professions in the Chemical Engineering field. AIChE exists to promote excellence in the Chemical Engineering profession. The organization also strives to promote good ethics, diversity and lifelong development for Chemical Engineers. We host informative and social events that include student panels, industry talks, lab tours, and a ChemE Department BBQ! - - - -We also have a Chem-E-Car team that works on building and autonomous shoe box sized car powered by chemical reaction developed by students. On the day of competition we learn the distance the car has to travel and based on our calibration curves determine the quantity of reactants required for the car to travel that distance holding a certain amount of water.', '351', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5685f13d-b42b-42d3-913d-909cf043bd84', 'American Society of Civil Engineers', 'Northeastern University Student Chapter of the American Society of Civil Engineers', 'Founded in 1852, the American Society of Civil Engineers (ASCE) represents more than 145,000 members of the civil engineering profession worldwide and is America’s oldest national engineering society. - -Northeastern University''s ASCE student chapter (NU ASCE) help their members develop interpersonal and professional relationships through a variety of extracurricular activities and community service projects within the field of civil and environmental engineering. Each week we hold a lecture presented by a different professional working in civil and environmental engineering careers. We work closely with a variety of civil and environmental engineering clubs and organizations, such as Engineers Without Borders (EWB), Steel Bridge Club, Concrete Canoe, the Institute of Transportation Engineers (ITE), Northeastern University Sustainable Building Organization (NUSBO), and New England Water Environmental Association (NEWEA); and we participate in the Concrete Canoe and Steel Bridge competitions. NU ASCE also coordinates with Chi Epsilon Civil Engineering Honor Society to organize tutoring for civil and environmental engineering students, and has helped with 30 years of community service projects.', '188', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6ae239d3-e712-44a4-a4d1-99d8df8a6286', 'American Society of Mechanical Engineers', 'We are a campus chapter of the American Society of Mechanical Engineers. We host weekly industry meetings from professionals across the field, workshops to gain hands-on skills, a Solidworks certification course, and more events for the MechE community!', 'We are a campus chapter of the American Society of Mechanical Engineers. We bring in representatives of companies and other professionals to talk to students about engineering companies as well as new and upcoming information/technology in the field. It is a great way to make connections and explore your future career. We also teach an advanced 3D modeling training course (SolidWorks) to better prepare students for their Co-ops. We aim to help students grow as professionals, gain experience, and build a healthy resume.', '636', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('0c4628be-3745-4c63-aacf-8046ce2bf7d0', 'Anime of NU', 'Twice every week, we watch and discuss Japanese anime and culture. This is a club where you come, watch a couple of episodes, laugh and cry with everyone, then chat about it afterward. - - - -Make sure to join our discord: https://discord.gg/pwrMBptJ3m', 'Do you like stories of traveling to a new world and defeating villains? How about stories of love and sacrifice? Maybe you''re more into suspense and drama? At Anime of NU, we offer all of that and more! We are a club with one simple objective: to watch and discuss Japanese anime and culture. Every week, we watch a slice-of-life (typically more humorous, romantic, and/or heartfelt) and action (do we need to explain what "action" is?) anime, and we also throw in some seasonal movies and activities. We also act as a social space for members. This is a club where you come, watch a couple of episodes, laugh and cry with everyone, then chat about it afterward. It''s a fun time for the whole family! - ---- - -Tuesdays, 7-9pm, 201 Hastings ----- Fridays, 7-9pm, 106 West Village G - -Make sure to join us in Discord here so you can get all the updates and vote on which shows we''ll watch!', '1016', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('0946f70a-0a66-4df6-b52e-8735ef7edd5f', 'Arab Students Association at Northeastern University', 'Our purpose is to bring Arab students attending Northeastern University together to create connections and friendships. Also, we raise awareness about Arabs'' diverse and unique cultures, values, and customs within the entire Northeastern Community.', 'Arab Students Association at Northeastern University looks to create a space for students of Arab backgrounds, as well as those who seek to create connections with the Arab culture and world, to mingle and meet one another. We also look to bring all Arab students attending Northeastern University together and make them raise awareness of their diverse and unique cultures, values, and customs within the entire Northeastern Community. Also, the ASA will provide its members, both Arab and non-Arab, with the needed academic and career support in order for them to excel and succeed.', '999', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b95c5bf2-e75b-4af8-8f09-cf9ea9403c91', 'Armenian Student Association at Northeastern University', 'ASANU brings together Armenian students within Northeastern University and its nearby schools. It works to introduce Armenian history, language, music, dance, and current events to all its members in an effort to preserve the culture through education.', 'ASA brings together the Armenian students within Northeastern University. It introduces Armenian history, language, music, dance, current events, and food to all Armenian and non-Armenian members of the University. Additionally, ASA works closely with the ASA groups with other colleges in the Boston area including BU, BC, Bentley, MCPHS, Tufts, Harvard, and MIT, but we are not directly affiliated with them. - -If you are at all interested in joining or would like to learn more about what we do, please feel free to reach out to the E-Board at asa@northeastern.edu or find us on instagram @asanortheastern', '375', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('4f9b1c4d-2f02-43d8-9d8c-b7ecebf423a1', 'Art Blanche at NEU', 'Art Blanche provides space for everyone to express their visions and ideas through art (painting, drawing, doodling, etc), aka weekly hang-out with other creative and artistic people. Skills & experience do not matter as long as you are open-minded.', 'Art Blanche is an art club at NEU that provides art enthusiasts unlimited options to express their creativity. We want to unite everyone interested in creating art and arrange a place where students can express themselves through any fine art. We welcome any 2D and 3D media. We want to give proficient artists a chance to improve their skills through communication and help from other fellow-artists. We will arrange "critique rounds," where we would discuss each other''s work and share tips and tricks. - -Apart from having proficient artists, we also welcome newcomers interested in learning how to do art and express their voice through the art form. By inviting professional artists and students to teach and lecture at our club, newcomers as well as more proficient artist will be able to develop and improve their own style. - -We will organize "life drawing " sessions to do figure studies. Having the Museum of Fine Arts right around the corner we will take advantage of it to seek inspiration for our own work by arranging visits and guiding a group discussion. - -At the end of each semester we will arrange student exhibitions presenting work created during the last months.', '638', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('2d6b5173-0074-4a29-8b40-b99227344f63', 'Art4All', 'Art4All is committed to giving every student an equitable opportunity to foster their creativity. Our free Boston-based virtual mentoring programs and community partnerships view students first and foremost as creators, building more resources for all. ', 'Art4All believes the key to addressing these inequities relies on supporting students and their pursuits at the community and individual level. All our resources are tailored to incorporate the ACE model, which serves as the three main values of Art4All’s mission: accessibility, creativity, and education. Our free Boston-based virtual mentoring programs and community partnerships view students first and foremost as creators — each with unique and individual challenges that require personalized guidance and support. Art4All also organizes arts-based fundraisers and student exhibitions, giving students a quality means and open platform to confidently express their art to the communities. We work in collaboration with EVKids and other community partners. ', '88', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d8c815c1-b68f-4675-8ac8-70911ca7963f', 'Artificial Intelligence Club', 'Step into the world of artificial intelligence where learning knows no bounds. Join us to explore, create, and innovate through projects, discussions, and a community passionate about the limitless potential of AI and its responsible and ethical use.', 'Welcome to the Artificial Intelligence Club, where you can dive into the fascinating realm of artificial intelligence without any limits to your learning journey. Immerse yourself in a community driven by passion for exploring, creating, and innovating with AI through engaging projects and thought-provoking discussions. Here, we emphasize the boundless potential of AI while always ensuring its responsible and ethical use. Join us to be part of an exciting space where your curiosity and ideas are truly valued.', '208', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d4770261-f9a0-4edb-8c3e-0b7d413484cf', 'Artistry Magazine', 'Artistry Magazine is an online and print publication that features articles and student artwork related to any and all forms of art and culture. We welcome all into our community and encourage students to engage with the arts and the city of Boston.', 'Artistry Magazine is an online and print publication that features articles and student artwork related to any and all forms of art and culture. We welcome all into our community and encourage students to engage with the arts on Northeastern''s campus and throughout the city of Boston. We are always looking for talented writers, photographers, and designers to work on web content as well as the semesterly magazine. Check out our website and social media to learn more about the organization and how to get involved and click here to read our latest issue!', '981', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('f2392921-48f8-49d7-aea2-fc645e16228d', 'Asian American Center (Campus Resource)', 'The Asian American Center at Northeastern seeks to establish a dynamic presence of the Asian American community at the University. The role of the Center at Northeastern is to ensure the development and enhancement of the University’s commitment to the...', 'The Asian American Center at Northeastern seeks to establish a dynamic presence of the Asian American community at the University. The role of the Center at Northeastern is to ensure the development and enhancement of the University’s commitment to the Asian American community. In providing the Asian American community a vehicle for increasing visibility on campus, the Center aims to support student exploration of social identity development and empower students to take an active role in shaping their experiences at Northeastern. To that end, the Center strives to promote continued dialogue on the rich diversity and complexity of the Asian American experience, and how that complexity manifests itself in various aspects of life within and outside of the University.', '778', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('2963e562-891c-456e-a461-d7ea9174febe', 'Asian Pacific American Law Student Association', 'The Asian Pacific American Law Students Association (APALSA) is an organization for Asian American and Pacific Islander (AAPI) students at Northeastern University School of Law, including Native Hawaiian, Pacific Islander, South Asian, Southeast Asian...', 'The Asian Pacific American Law Students Association (APALSA) is an organization for Asian American and Pacific Islander (AAPI) students at Northeastern University School of Law, including Native Hawaiian, Pacific Islander, South Asian, Southeast Asian, East Asian, mixed-race and other students who identify under the AAPI umbrella. In addition to providing a social and academic support network for AAPI students at the law school, APALSA is active both in the Boston community and on campus. APALSA works with the law school administration and other student organizations, and is represented on the Admissions Committee and the Committee Against Institutional Racism (CAIR). Throughout the year, APALSA hosts various social, educational and professional events for both AAPI law students and law students in general.', '370', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('8ea18cba-d416-4281-9bc8-af9552a87689', 'Asian Student Union', 'We are a student organization that strives towards culturally sensitive advising, advocacy, services, programs, and resources for the Asian-American students of Northeastern University as well as the neighboring area. ', 'We are a community that strives towards culturally sensitive advising, advocacy, services, programs, and resources for the Asian American students of Northeastern University as well as the neighboring area. This organization provides resources for prospective, current or alumni students, offering insight into the Asian American community and experience at Northeastern. We strive in promoting Asian American Spirit, Culture and Unity.', '73', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('bd086043-40ad-4712-ab61-0b1590be9485', 'ASLA Adapt', 'Northeastern University''s only organization centered on landscape design! Advocate for climate action and environmental justice while exploring landscape architecture and adjacent topics.', 'Adapt is Northeastern’s organization centered on urban landscape design and the professional association for Landscape Architecture students. As a student affiliate chapter of the American Society of Landscape Architects (ASLA) we are working towards growing our department and getting it accredited, advocating for climate action and environmental justice, networking with environmental designers, and encouraging the adaptation of landscape architecture to our ever-changing world. Join us in exploring topics regarding landscape architecture, ecology, environmental science/engineering, urban planning, and related fields! An interest in the landscape is all that is needed to participate, all majors welcome!', '692', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a833d90f-8823-4a43-adba-0e8cc092a98e', 'Aspiring Product Managers Club', 'Aspiring Product Managers Club at Northeastern University aims to bring like-minded individuals who want to learn more about Product and eventually break into the Product Management domain.', 'Aspiring Product Managers Club at Northeastern University aims to bring like-minded individuals who want to learn more about Product and eventually break into the Product Management domain. - -Till today we have conducted 80+ events with 800+ participants where our events were broadly classified as – meetups, Mock Interviews, Workshops, Speaker Series, and Case Study. - -This spring 2024 semester, we plan to bring several upgrades to our flagship programs and several new engaging programs for our members! - -We are expanding and have started working on real-time products with members as product managers. Come join us to get a slice of a product manager''s life! - - ', '283', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b27ab19e-d197-4740-bbb9-e30535e44cac', 'Association of Latino Professionals for America', 'ALPFA, founded in 1972, stands for the Association of Latino Professionals For America. ALPFA is a national non-profit organization that has become the largest Latino Association for business professionals and students with more than 21,000 members na...', 'ALPFA, founded in 1972, stands for the Association of Latino Professionals For America. ALPFA is a national non-profit organization that has become the largest Latino Association for business professionals and students with more than 21,000 members nationwide (this includes 43 professional and over 135 student chapters). ALPFA serves as the catalyst connecting professionals with decision makers at Fortune 1000 partners and other corporate members seeking diverse opportunities. In addition, ALPFA has developed various events at a local and national level to prepare students from college to career-ready professionals through mentorship, leadership training and development, job placement and community volunteerism. ALPFA-NU was officially recognized in February of 2014 and has successfully become the first student chapter in the city of Boston to continue the growth of the organization with the mission to empower the growth of diverse leaders through networking, professional development, and career opportunities with our corporate sponsors.', '695', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('69be0953-8919-475f-a917-0515f261d421', 'Baja SAE Northeastern', 'NU Baja is a student-run competition team that designs, builds, and races a single-seat, off-road vehicle. Our team members learn valuable skills in design, manufacturing, and leadership. Visit our website to learn more and join the mailing list! - -', 'NU Baja is for anyone interested in learning by doing. We are a close-knit team that designs, builds, and races a vehicle from the ground up. Our team members learn the engineering design cycle, CAD, manufacturing techniques, management skills, and leadership qualities. We welcome new members at any experience level! - -Every year, our team races a high-performance vehicle in national Baja SAE collegiate design competitions. The challenges include rock crawls, hill climbs, and a grueling four-hour endurance race. We are a group of highly motivated (mostly) engineers that work together to create a vehicle capable of withstanding these obstacles and outperforming hundreds of other colleges from around the world. - -If this sounds like something that interests you, please sign up for our mailing list! Mailing List Signup - -Baja Promo Video', '536', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('1a98a66f-9057-4921-9d40-7c8054b574f7', 'BAPS Campus Fellowship', 'BCF meets weekly for discussion based on BAPS Swaminarayan concepts and teachings. Students discuss topics that affect them in college and will be able to learn to balance their life as college student while practicing the Hindu faith.', 'Through youth group discussions, campus events, and community service projects, students will have the opportunity to introduce the Hindu faith to the rest of the NEU community!', '896', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b88022e2-6c10-4133-92ca-818d25168c34', 'Barkada', 'NU Barkada is NEU''s Filipino culture organization. Our mission is to promote diversity and fellowship by sharing the richness of Filipino heritage through member and community engagement in cultural, educational, and social activities.', 'Northeastern University''s Barkada began as a small group of Filipino/Filipino-American students who aspired to have their culture recognized at the university. They wanted to have an organization that united people who embrace Filipino culture and wish to spread it through cultural, educational, and social activities. With hard work, dedication, and the aid of their club advisor Dean Perkins, Barkada became an official NU organization on January 26, 1998. Throughout its years as an established student organization, NU Barkada has grown to become a bigger family than its founders had ever imagined. However, the organization still holds true to the guidelines and values set forth by its founders, and continues to build upon their strong foundation. "Barkada" is a word from the one of the main Filipino languages, Tagalog, which means "group of friends." We embrace each and every one of our members as not only friends, but family, as well. - -NU Barkada''s logo, from one aspect, resembles the Nipa Hut, a bamboo shelter built in the rural, coastal areas of the Philippines. Barkada, like the Nipa Hut, provides its members with support and is built to withstand adverse conditions, day-in and day-out. Sheltered within the Nipa Hut beneath the sun and the moon, the flag of the Philippines symbolizes the rich Filipino culture from which Barkada draws its roots. The logo also resembles two people, hand-in-hand, dancing Tinikling, a Filipino cultural dance. This encompasses one of the primary goals of NU Barkada, which is to educate others about the Filipino culture and try to bridge the gap that separates people from different walks of life.Keep up with us at all of our social medias, which are linked below! Peace, Love, Barkada! ❤️', '797', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('3a43a2a4-1c7d-494a-b579-ec40bd54ae1d', 'Bee Society', 'A student organization dedicated to pollinator advocacy, bees, and beekeeping on campus.', 'We are a student organization that works closely with Facilities and Grounds, other student environmental groups, and the MassBee Association to promote pollinator interests and give Northeastern students the chance to suit up and join us at our club hive.', '112', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('590db4c5-efa3-4a2a-a843-d5284b0ae3ed', 'Best Buddies', 'College chapter of the Best Buddies International organization', 'Mission: The mission of Best Buddies is to enhance the lives of people with intellectual disabilities by providing opportunities for one-to-one friendships. We do this by matching college student volunteers in mutually enriching friendships with persons with intellectual disabilities.', '428', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a14ed6a2-38c9-48d7-9879-fcbda58a1653', 'Beta Alpha Psi', 'Beta Alpha Psi is an honorary organization for Accounting, Finance, and Management Information students and professionals from the College of Business. The primary objective of Beta Alpha Psi is to encourage and give recognition to scholastic achievement', 'Beta Alpha Psi is a national honorary organization for Accounting, Finance, and Management Information Systems students and professionals within the field of business. The primary objective of Beta Alpha Psi is to encourage and give recognition to scholastic and professional excellence in the business information field. This includes promoting the study and practice of accounting, finance and information systems; providing opportunities for self-development, service and association among members and practicing professionals, and encouraging a sense of ethical, social, and public responsibility. - - - -Please email neubap@gmail.com to be added to the contact list!', '256', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('fc0914c5-38f3-47f9-a0f5-6f356e997d66', 'Beta Beta Beta', 'Beta Beta Beta (TriBeta) is a society for students, particularly undergraduates, dedicated to improving the understanding and appreciation of biological study and extending boundaries of human knowledge through scientific research. The organization off...', 'Beta Beta Beta (TriBeta) is an undergraduate honor''s society dedicated to improving the understanding and appreciation of biological study and extending boundaries of human knowledge through scientific research. The organization offers resources for students to further their paths in the many biological fields.', '586', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6347b395-430f-4724-ad78-58551eaca8f3', 'Beta Chi Theta', 'Founded on December 3, 2011, Alpha Alpha Chapter of Beta Chi Theta Fraternity Inc. believes in fostering brotherhood and creating leaders within the Northeastern University community. We are the nation''s premiere South Asian Interest Fraternity, and we...', 'Founded on December 3, 2011, Alpha Alpha Chapter of Beta Chi Theta Fraternity Inc. believes in fostering brotherhood and creating leaders within the Northeastern University community. We are the nation''s premiere South Asian Interest Fraternity, and were recently awarded recognition as the best chapter of Beta Chi Theta Fraternity nationally. The gentlemen of this chapter hold themselves to the highest, moral, professional, academic, and social standards. The brothers promote the six pillars of Beta Chi Theta: Brotherhood, Tradition, Service to Humanity, South Asian Awareness, Academic Excellence, and a Unified Nationwide Network in the world around us.', '320', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('f21180bf-2ac2-4881-b979-7e4be312a7b1', 'Beta Gamma Epsilon', 'Founded in 1919, Beta Gamma Epsilon is Northeastern''s oldest fraternity. Exclusive to engineering and science majors, BΓE has a long and rich tradition at Northeastern and in Boston''s historic Back Bay district.', 'Founded in 1919, Beta Gamma Epsilon is Northeastern''s oldest fraternity. Exclusive to engineering and science majors, BΓE has a long and rich tradition at Northeastern and in Boston''s historic Back Bay district.', '607', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('97654d06-b860-4644-9054-05c09f04f259', 'Beta Theta Pi', 'The Eta Zeta Chapter of Beta Theta Pi''s mission is to cultivate a brotherhood of unsullied friendship and fidelity, which will assist, support, and guide their noble pursuits throughout their collegiate years and beyond.', 'https://vimeo.com/309675499 - - - -The Eta Zeta Chapter of Beta Theta Pi''s mission is to cultivate a brotherhood of unsullied friendship and fidelity, which will assist, support, and guide their noble pursuits throughout their collegiate years and beyond, commit to serve our University and surrounding communities through service, philanthropy, and leadership, establish a strong involvement with the Northeastern University community, hold the highest moral, academic, professional, and social reputation of excellence. - - ', '176', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('8e7a984a-c091-4ec9-b529-12cab33fa494', 'Big Sister Boston Northeastern', 'The Big Sister Association of Greater Boston is one of 340 affiliated Big Brothers Big Sisters organizations across the country, but the only exclusively female-focused program. Join Northeastern''s Chapter for guidance to grow as Bigs together!', 'Big Sister Association of Greater Boston is one of 340 affiliated Big Brothers Big Sisters organizations across the country, but the only exclusively female-focused program. Big Sister Association of Greater Boston ignites girls'' passion and success through positive mentoring relationships with women and enrichment programs that support girls'' healthy development. Big Sister Boston Northeastern empowers femme students to become leaders by facilitating on-campus engagement opportunities, planning fundraising and recruitment events, and by discussing content that relates to women''s and girls'' interests.', '744', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('82c76098-e4f2-489b-b87d-098cbfc92d08', 'Biochemistry Club', 'Northeastern University Biochemistry Club provides professional, academic, and social events for those within the major or interested in the field. Events include guest speakers, panels, and social outings!', 'We''re excited to welcome you to the Northeastern University Biochemistry Club! We are dedicated to providing resources to those in the major and those who are interested in the field. Our bi-weekly meetings are a great way for members to network, learn about exciting graduate school and career opportunities following an undergraduate Biochemistry degree, and make meaningful connections with faculty, guest speakers, and fellow Biochemistry majors. At our meetings, we host co-op, career, and graduate school panels, a variety of guest speakers (faculty and industry), and more, and hold many social events. We''re excited to see you at our meetings this year, and please reach out to bcc.neu@gmail.com with any questions.', '984', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('64d4520d-4d0a-4bed-b9cc-1b3210b1f8bb', 'Bioengineering Graduate Student Council', 'The Bioengineering Graduate Student Council (BioE GSC) seeks to provide bioengineering graduate students with an enriched academic environment and sense of community amongst fellow students.', 'The Bioengineering Graduate Student Council (BioE GSC) seeks to provide bioengineering graduate students with an enriched academic environment and sense of community amongst fellow students. The primary focus of the BioE GSC is to provide social, scholastic, and administrative outlets to support students’ academic and career advancement.', '743', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6f5a74bd-6f89-47d2-8eb1-3f0c09eb27ac', 'Biology Club', 'The Biology Club is a great way to participate in fun biology-themed activities on and off campus, meet other students in the major, get graduate/medical school information, and find out about upcoming lectures and events around Northeastern.', 'The Biology Club is a great way to participate in fun biology-themed activities on and off campus, meet other students in the major, get graduate school information, and find out about upcoming lectures and events both here at Northeastern and at other institutions. We are involved in professional events such as co-op panels, guest speakers, and undergraduate research symposiums. We also put on fun events like museum outings, parties for Halloween, mixers with other universities, etc..', '883', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('252cac46-b5e5-4917-9737-f8fb468afaa9', 'Biomedical Engineering Society', 'This club is for students interested in Bioengineering. Students will meet their peers and learn about their opportunities as Bioengineers at Northeastern and post-undergrad. ', 'This club is for students interested in Biomedical Engineering in any capacity. We will work to educate and inspire students about opportunities in Biomedical Engineering.', '1020', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('97412c7e-d2e3-4019-b1ef-76b3ebcc4bcf', 'Bipartisan Disagreement', 'Bipartisan Disagreement is a student think-tank at Northeastern University that focuses on using different tools - in-person or virtual discussion, podcasting, and print - to bridge the divide between political parties and seek common ground. ', 'Bipartisan Disagreement is a student think tank at Northeastern University that uses a variety of tools - discussion, podcasting, and print - to bridge the divide between political parties and seek common ground. We encourage politically diverse, yet non-divisive conversation to help foster an understanding of different perspectives, rather than seeking to be “right.” - -Become a contributor on our website and follow us on Instagram for our polls, events,, and meeting updates!', '208', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('20083dc8-cbe0-45dd-b713-c3a2a63faa94', 'Black Athlete Caucus ', 'Northeastern University Black Athlete Caucus (NUBAC) seeks to represent the voice of Northeastern’s Black student-athletes, while diversifying & implementing change in Northeastern Athletics.', 'The Northeastern University Black Athlete Caucus (NUBAC) seeks to represent the voice of and bring exposure to the Black Athletic community at Northeastern. We strive to provide educational, community-building, and outreach opportunities while promoting our Black Student-Athletes and advocating for change within our athletic administration. Our vision, to create a support system and a safe space for learning and guidance, as well as to encourage our fellow Black Student-Athletes to network and form strong connections, all fall in line with NUBAC’s core values: Boldness, Leadership, Accountability, Collaboration, and Kindness. With this we hope to see powerful changes including more voices being understood and the pipeline of Black student athletes coming in and out of Northeastern feeling not only included at our University but have a true sense of belonging. With NUBAC we would heavily focus on giving back to our community/ getting involved with low-income schools, and also holding our institution/programs accountable for continuing the positive racial/social change at Northeastern. Our intended audience: Black student athletes at Northeastern University. We aspire to host events that include educational guest speakers, host fundraisers, collaborate with other programs for community nights, etc. We are creating a group where Black student athletes on campus will bed heard and be proactive.', '102', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('4a8970d4-e043-43ee-b122-79df6d8d0201', 'Black Business Student Association', 'The Northeastern Black Business Student Association aims to promote excellence, enrichment, and engagement for its members through a business lens.', 'The mission of the Black Business Student Association (BBSA) is to connect and provide students with information, opportunities, and community to promote excellence, enrichment, and engagement through a business lens.', '299', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('1b07929e-e312-4a84-a39a-f7fe09639262', 'Black Christian Fellowship', 'Black Christian Fellowship creates and cultivates the unique Black Christian experience on Northeastern’s campus. Through weekly meetings, service events, and other big events (Easter, Christmas, etc.), we gather to challenge and uplift each other.', 'The Black Christian Fellowship is geared towards creating and cultivating the unique Black Christian experience on Northeastern’s campus. As college students, the journey of faith is a hard one. We strive to create a welcoming community that centers Jesus in all of our efforts and events. Together, we learn and grow by challenging and uplifting each other to live Christ-like. We gather to study the Bible and use it as instructions for our daily living. BCF strives to build a comfortable, inviting, and non-judgmental environment for students to thrive. We aim for our efforts to leave a lasting impact on not only our members but the entire Northeastern campus and Boston community. As a Christian organization, one of our pillars is service. In our programs, we discuss the challenges we’ve faced and how we can go out into the community and help others overcome these obstacles. BCF provides a space where students can be comfortable to grow, challenged to give, and uplifted to prosper. ', '375', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('35e73f06-3d7e-4f6d-88c6-86ac5c40f64d', 'Black Engineering Student Society', 'The Black Engineering Student Society serves to provide an environment for minority engineers & STEM students to thrive academically, professionally, and socially at Northeastern. BESS is also a National Society of Black Engineers(NSBE) chapter.', 'The Black Engineering Student Society serves on the Northeastern campus to provide an environment for minority engineers & STEM students to thrive academically, professionally, and socially. We welcome students of different majors to join and benefit from our resources as well. BESS is also a chapter of the National Society of Black Engineers(NSBE).', '640', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('30713479-8e72-4bba-84b3-6eaa3f7f6008', 'Black Islamic Association', 'The Black Islamic Association is a club that is dedicated to providing a welcoming space to Black Muslims on campus.', 'The Black Islamic Association is a club that is dedicated to providing a welcoming space to Black Muslims on campus. It is quite easy to feel isolated and alone on a college campus of around 15,000 people, thus we believe it is important for every student to have an understanding support system on campus. BIA provides programming regarding shared personal experiences, Islamic lectures, and socials to ensure that club members create a community founded on compassion and reassurance. We also plan to educate members on the rich history Black Muslims have made in the Islamic world. We aim to hopefully carry this message not only within our community but to the surrounding Muslim communities to teach others about the big impact Black Muslims have made. ', '512', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6afb64d9-e319-4e32-95fd-7d8aad4d0af2', 'Black Law Student Association, Kemet Chapter', 'The Black Law Student Association-Kemet Chapter is committed to maintaining a safe-space and preventing the silencing of the voice and vote of students of Black-African descent that is inevitable with an integrated body. It is our mission to serve the ...', 'The Black Law Student Association-Kemet Chapter is committed to maintaining a safe-space and preventing the silencing of the voice and vote of students of Black-African descent that is inevitable with an integrated body. It is our mission to serve the NUSL and legal community by increasing educational and career opportunities for students of Black-African descent. Members are encouraged to help aid students of Black-African descent to achieve success and to prepare them to make choices over their lifetime in achieving their full potential in the legal profession. It is also our mission to support an environment of social camaraderie and preserve the rich cultural history of those members who came before us. Members are dedicated to recruitment, community involvement, and activism as a means to remedy the small number of students of Black-African descent. With this mission, the Kemet Chapter adheres to the following goals in addition to the aforementioned national goals: (1) To instill in attorneys of Black-African descent and students of Black-African descent a greater awareness of and commitment to the needs of the African-American and African Diaspora community, (2) To influence the legal community to bring about meaningful socio-economic change to meet the needs of Black-African and African Diaspora community, (3) To promote the hiring and retention of faculty and staff of Black-African descent, and (4) To provide and promote opportunities for students of Black-African descent to establish relationships within the greater legal community.', '1021', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6faaad9f-a15c-4b6b-a61e-85f58e6b898a', 'Blockchain@NEU', 'Blockchain@NEU is a student-led organization started in September 2021 whose mission is to cultivate an open community of thought leaders, researchers, and innovators to support the education and development of blockchain technologies.', 'Blockchain@NEU is a student-led organization started in September 2021 whose mission is to cultivate an open community of thought leaders, researchers, and innovators to support the education and development of blockchain technologies. We are fostering an open community across undergraduate, graduate, alumni, and industry professionals to build a Blockchain hub at Northeastern University.', '514', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('f56c182b-95f4-47c9-9d59-91e43ebc3c79', 'Boston Health Initiative at Northeastern University', 'Boston Health Initiative is a student-led organization that works collaboratively with community partners towards advocating for health equity and providing health education in underserved Boston communities.', 'Boston Health Initiative is a student-led organization that works collaboratively with community partners towards advocating for health equity and providing health education in underserved Boston communities. Undergraduate volunteers will serve as BHI''s core workforce, utilizing their health content training, lived experiences, and perspectives to impact the future of those we serve. - -Our vision is to move towards a world where comprehensive, equitable health education is the standard, not an exception. BHI aims to work with non-governmental organizations (NGOs) and Boston Public Schools (BPS) to provide immersive, accessible programming for all individuals. - - ', '13', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6cafa98a-3b08-4460-a21c-cb25b8afa83e', 'Botanical Society of Northeastern University', 'The Botanical Society of Northeastern University aims to create a community dedicated to bringing together all those interested in the various aspects of plants and botany. The organization aims to promote the importance of nature, educate students on...', 'The Botanical Society of Northeastern University aims to create a community dedicated to bringing together all those interested in the various aspects of plants and botany. The organization aims to promote the importance of nature, educate students on environmental wellness, and bring together plant lovers for fun activities. Ultimately, the organization will work as a framework through which students may learn, share, create, and explore! - - - -If you would like to get in touch with us, the best way is to contact our email: nubsinfo@gmail.com', '299', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('ba099964-2709-4907-9644-4e0d0cd5fd30', 'Brazilian Student Association at Northeastern University', 'BRASA Northeastern is dedicated bringing together the Brazilian community here at Northeastern, continuing to offer fun and professional events to link the community both socially and professionally.', 'The Brazilian Student Association (BRASA) was created in 2014 as the result of the actions of a group of Brazilian students studying in various American universities. This not-for-profit organization is dedicated to the Brazil''s development through the creation of platforms between our home country and students abroad. At its core, BRASA has proactivity, excelency, meritocracy, and commitment to Brazil. BRASA is currently present in over 90 universities in the United States, Canada, France, and the UK, and already has more than 7,000 members. - -Our goal moving forward is to continue to bring together the Brazilian community here at Northeastern, continuing to offer fun and professional events to link the community both socially and professionally. - -gobrasa.org', '545', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('53032ab1-d787-4528-bba0-cf5517df3ae0', 'Bull & Bear Research', 'Bull & Bear Research (BBR) was formed to empower a financial advantage through comprehensive industry, equity, and macroeconomic research at Northeastern University. ', 'Bull & Bear Research (BBR) was formed to empower a financial advantage through comprehensive industry, equity, and macroeconomic research at Northeastern University. The historic void of a quality research organization on Northeastern’s campus has meant that students lack an outlet to explore careers related to research. BBR provides a resource for students to foster growth in their qualitative and quantitative financial analytics skills. In addition, BBR takes on a unique role in the D’Amore McKim extracurricular ecosystem by providing research to the student-led funds on campus in a traditional buy-side role, enabling students to make more informed investment decisions. Our goal is to erode the barriers that traditionally encircle quality equity research accessibility and provide a differentiated growth opportunity for anyone interested in public markets, quantitative methods, and the broader world of finance.', '661', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('77c73388-0ddd-4907-b5b2-a056925e4a8a', 'Burmese Students Association of Northeastern University', 'We aim to foster an inclusive and welcoming community for students of Northeastern University students and serve as a place for both Burmese and non-Burmese Northeastern students who are interested in learning more about the unique culture and taste of...', 'We aim to foster an inclusive and welcoming community for students of Northeastern University students and serve as a place for all Northeastern students who are interested in learning more about the unique culture of Myanmar. Our organization’s focus will be on promoting awareness about Myanmar through its various events, providing networking opportunities and a sense of community for the members.', '898', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('977fb50e-bfd6-4fea-8aa7-8c71a7777209', 'Caribbean Students'' Organization', 'The Caribbean Students'' Organization, established in 1982, is a social and cultural group that caters to all diasporas but primarily to people of the West Indian Descent. The organization promotes Caribbean unity, cultural awareness, togetherness, ...', 'The Northeastern Caribbean Students'' Organization, established in 1982, is a social and cultural group that caters to all diasporas but primarily to people of West Indian Descent. The organization was formed in order to promote Caribbean unity, cultural awareness, togetherness, social interest, and academic excellence. We also encourage the fostering of friendships and association among students, and the academic development and achievement of all members. We provide a familiar environment and inclusive space for students from the Caribbean region, Caribbean parentage, or of Caribbean interest to share experiences and empathize with one another. Our slogan says it best: "Unity is strength, and our culture makes us one."', '297', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('60268d7e-5aaa-4553-a5fa-78b198dffc73', 'Catholic Student Association', 'The Catholic Student Association is an ever-growing spiritual group that has been described as ''a relevant down to earth community of college students.'' We provide a broad range of service, social, and spiritual activities to promote a personal and love.', ' - - - - - -The Catholic Student Association is an ever-growing spiritual family of college students. We provide a broad range of service, social, and spiritual activities to promote a personal and loving relationship with Jesus and the Catholic faith. We understand the profound spiritual journey is not to be taken lightly, and our community works in as many ways possible to be a guide, a support, and a friend for you on your personal trek with faith. - - - -The Catholic Center at Northeastern University stands as a sign of HOPE in Jesus Christ. With CHRIST-like care and LOVE for every PERSON, the Catholic Center BRINGS in students to know the faith, BUILDS up students to live the faith and SENDS out students to share the faith for the good of the WORLD, the growth of the CHURCH, and all for the glory of GOD! - - - -Register for our weekly emails here! - - - - - -', '198', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('59fe27cb-931e-4c46-a272-0a6f6aff113f', 'Center for Spirituality, Dialogue and Service (Campus Resource)', 'Welcome to the Center for Spirituality, Dialogue and Service, an important and exciting university initiative which builds on the successes of the former Spiritual Life Center and seeks to advance a new model of campus religious/spiritual programing, i...', 'Welcome to the Center for Spirituality, Dialogue and Service, an important and exciting university initiative which builds on the successes of the former Spiritual Life Center and seeks to advance a new model of campus religious/spiritual programing, interfaith and intercultural dialogue, and civic engagement for global citizenship. This website is currently under construction. Please contact the new center Executive Director, Alexander Levering Kern, to learn more about our programs. To join our email list for program updates, or to inquire about group use of the Sacred Space or Reflection Room, please visit our website and fill out the electronic forms at www.northeastern.edu/spirituallife To learn about worship services and opportunities with Northeastern’s religious communities, please contact Hillel, the Catholic Center, the Islamic Society of Northeastern, the Lutheran-Episcopal Ministry, and our other groups. The Sacred Space and Reflection Room in Ell Hall are available for your individual prayer and reflection. We look forward to welcoming you and working with you.', '527', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('09584e54-ab26-4984-9c33-42891bf3326e', 'Chabad at Northeastern University', 'Chabad at Northeastern University, part of the world-wide network of Chabad on Campus, is dedicated to furthering the understanding and observance of Jewish traditions to all, regardless of their background.', 'Chabad at Northeastern University, part of the world-wide network of Chabad on Campus, is dedicated to furthering the understanding and observance of Jewish traditions to all, regardless of their background. In the spirit of the teaching and example of the Lubavitcher Rebbe, Rabbi Menachem M. Schneerson, we try to assist others in whatever capacity possible. At Chabad, our Shabbat, holiday programs, classes, events, and the general atmosphere are all geared to make college students feel at home. Come socialize in a comfortable and home-like setting, with friends, food, and discussion. Relax in our warm and welcoming home, where you are free to explore your Jewish heritage in a nonjudgmental and friendly atmosphere. Founded on strong personal relationships, Chabad educates and empowers you to live the Joy of Judaism. Through the many social activities we provide, you can gain a deeper understanding and appreciation of your heritage, in a fun and interactive way.', '848', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('e559f504-8b9a-4bba-9823-eba61794b7d5', 'Changing Health, Attitudes, and Actions to Recreate Girls', 'CHAARG is a nationally backed health and wellness organization with chapters across the country with the goal of female empowerment through fitness. We focus on healthy living + creating a supportive environment for women to explore fitness.', 'CHAARG was founded in 2007 at Ohio State University, and since then has spread to over 100 universities across the country. CHAARG''s main goal is to "empower women through fitness" and prove that fitness can, and should be fun. In order to do this, we host weekly workout events for our members as well as wellness events, social events, and smaller group meetings to promote health + wellness as well as create a sense of community on campus. We partner with studios such as equinox, flywheel, crossfit, and more in order to expose our members to different types of workouts and help them "find their fit".', '563', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('8918e5df-e641-4ec3-8fa5-0112b15a5857', 'Cheese Club', 'Cheese Club is an organization to promote the knowledge of the production, consumption, and importance of everybody''s favorite food, cheese. We cover cheeses from around the world, from different animals, and different ways to eat and display cheese.', 'Yes, it’s exactly as it sounds: - -Cheese Club is a club where we learn about and eat delicious cheeses every week. Join us weekly on Thursdays at 8pm (meeting rooms are posted on our Instagram @nucheeseclub and our newsletter) where we’ll introduce a new curated selection of some popular favorites, niche picks, and funky options for more adventurous members to try. The club is open for anyone and everyone looking for a low key, casual event and great people to meet and socialize with. We hope to see you soon!', '367', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('852114f4-a6e2-498e-ba3d-23afaee23052', 'Chemical Engineering Graduate Student Council', 'The Chemical Engineering Graduate Student Council (ChemE GSC) is a committee of your peers appointed to enhance the overall experience for chemical engineering graduate students at Northeastern University by promoting both on and off campus student act...', 'The Chemical Engineering Graduate Student Council (ChemE GSC) is a committee of your peers appointed to enhance the overall experience for chemical engineering graduate students at Northeastern University by promoting both on and off campus student activities and networking throughout the entire department. We also work with the department faculty to offer recommendations on academic improvements to our graduate program.', '681', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('08289f56-0322-4ef4-a67d-ce0f08819c9a', 'Chi Epsilon', 'Chi Epsilon is the National Civil Engineering Honor Society in the United States. We honor engineering students who have exemplified the principles of "Scholarship, Character, Practicality, and Sociability" in the civil engineering profession.', 'Chi Epsilon is the National Civil Engineering Honor Society in the United States. We honor engineering students who have exemplified the principles of "Scholarship, Character, Practicality, and Sociability" in the civil engineering profession. - -Our members are civil and environmental engineering students in the top of their classes graduating within the next two years. - -We provide tutoring year-round as well as FE review sessions in the fall. Please contact nuchiepsilon@gmail.com for tutoring requests or questions about FE review sessions.', '154', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d72ab90a-4cc4-437e-a7d9-4ad881ccd042', 'Chi Omega', 'Founded in 1895 at the University of Arkansas, Chi Omega is the largest women''s fraternal organization in the world with over 345,000 initiates and 180 collegiate chapters. Throughout Chi Omega''s long and proud history, the Fraternity has brought its m...', 'Founded in 1895 at the University of Arkansas, Chi Omega is the largest women''s fraternal organization in the world with over 345,000 initiates and 180 collegiate chapters. Throughout Chi Omega''s long and proud history, the Fraternity has brought its members unequaled opportunities for personal growth and development. As a Chi Omega, you will have fun, grow, thrive, and achieve success. Chi Omegas are well balanced women who are involved on their campuses and in their communities. As a prominent national women''s fraternity, Chi Omega provides countless opportunities for fun and friendship during college and beyond.', '449', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('9d763d47-1b04-40aa-9330-e55d6afb5640', 'Chinese Christian Fellowship', 'Welcome to Northeastern University Chinese Christian Fellowship (NUCCF). We serve to help students know and learn about Christianity, and to provide a Christian faith gathering for students and staff. We welcome everyone regardless of your background o...', 'Welcome to Northeastern University Chinese Christian Fellowship (NUCCF). We serve to help students know and learn about Christianity, and to provide a Christian faith gathering for students and staff. We welcome everyone regardless of your background or religion.', '921', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('ccda223b-81e7-4d9e-96e3-d0031e997b3f', 'Chinese Student Association', 'The Chinese Student Association is a student organization that supports awareness of Chinese and Chinese American culture. As a group, we strive to unite students interested in Chinese American heritage and to give their voices representation in the No...', 'CSA, or the Chinese Student Association, was founded in 2012 with the purposes of unity, exploration, enrichment, community, and chilling out and having fun! We unite students interested in the Chinese American identity, explore traditional Chinese and Chinese American culture and heritage, enrich student life through meaningful events and relationships, foster a sense of community and provide a voice to those who identify within that community, and also provide an enjoyable space where students can escape the everyday stresses of school and work. To do this, we pride ourselves especially on the fun, yet educational, events and general meetings that we hold and on our robust family system. We invite people of all backgrounds to join the Chinese Student Association. - - - -We invite you to check out https://northeastern.edu/csa/ or linktr.ee/nu_csa, where our socials and the links to our newsletter and Google Calendar are easily accessible. Our website also has more information about our purpose, history, and executive board. - - ', '859', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6332bde1-4212-4958-bf76-fcf8bc3e7892', 'Chinese Students and Scholars Association', 'The object of Northeastern University Chinese Students and Scholars Association (hereafter referred to as NUCSSA) is to unite and help Chinese students and scholars registered in Northeastern University, and promote the culture communication between Ch...', 'The object of Northeastern University Chinese Students and Scholars Association (hereafter referred to as NUCSSA) is to unite and help Chinese students and scholars who will study or are studying in Northeastern University, and our Chinese alumni, and promote the culture communications between Chinese community and other culture groups. Please visit our website for more introduction, events and additional information at https://www.nucssa.org/ in Simplified Chinese.', '686', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('1cec5bce-1a6b-45e2-b5fd-a06beec2261c', 'Circle K', 'Circle K International is the college-level branch of the Kiwanis International organization. We are a community service group that serves our community in as many different ways as possible while having fun doing it!', 'Circle K International is the collegiate version of the Kiwanis International organization. We are a community service organization that helps connect Northeastern students to service partners across the city. We help provide the people power that organizations need to achieve their top goals! - -Some of the in-person service partners we work with are Community Servings, BalletRox, Fenway Community Center, and Women''s Lunch Place. We also started offering virtual service opportunities such as transcribing historical artifacts with the Smithsonian and donating rice through Free Rice. During the 2021-2022 service year, Northeastern Circle K completed over 1,000 service hours - even throughout the COVID-19 pandemic! - -We meet every other week on Thursdays at 6 PM EST - join the Engage page to be added to our email list, and visit our website to learn more about our club and the service we engage in throughout Boston.', '261', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('1f61f2ea-7ecc-4779-ab87-f705ecd19e30', 'Civil & Environmental Engineering Graduate Student Council', 'We are here for students and the community.', 'The purpose of the Civil & Environmental Engineering Graduate Student Council (CEE GSC) is to enhance the visibility of resources and create a greater sense of community within the Department of Civil and Environmental Engineering. We aim to be a bridge that unifies all CEE concentrations in a way that fosters fellowship - collaboration in academic and non-academic settings through sharing of cultures, research, and general interests. - -CEE GSC organizes a series of recurring events that include but are not limited to social functions, cultural functions, and informational sessions. Social functions include game nights and socials that bring together students for food and games, typically around the holiday periods (e.g. Semester Kick-off, Valentines Day, Halloween, Finals Week, etc). Examples of cultural functions are the celebration of Chinese New Year and Holi, where students are encouraged to bring food and share the importance of such events. Informational sessions include dispersal of information between students and administrative staff that result in town halls and new student question and answer sessions. All events create a more unified, friendly, and well-functioning department and CEE GSC provides a way for all members of our community to come together and establish lifelong friendships and resources. - -In addition, we serve as an informational avenue to communicate the needs of the student body to department administrators and faculty/staff. Through all of our events, we are able to listen to questions and concerns brought by students and convey them in a way where change can be effective, whether that is being a resource, connecting the correct parties, or supporting with follow up action items. An example is student concern about programming abilities, which has resulted in reoccurring programming workshops.', '645', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('af748daa-e6e1-4fe5-805a-6cfb4979f58e', 'Clay Cave', 'The Clay Cave is an open ceramics studio designed for students who want the opportunity to learn using clay through different mediums. All are welcome to try ceramics and make your own art to keep for personal use or gifts. No prior experience necessary!', 'The Clay Cave is an open studio for ceramics designed for students and faculty who want the opportunity to learn ceramics through different methods of using clay. No experience is required to join! There will be a lesson plan with projects that set members of the club up with fundamentals that are key to being a ceramicist. A full range of different projects will provide members a foundation in which they will be able to pursue whatever project seems interesting to them, whether that be hand-building pots, throwing pots on the wheel, sculpting, or even the chemistry behind glazing pots. For those with previous experience in the field, they can create whatever they desire and set up their own plans for projects. This is an experience beneficial to students of all groups because art uses a completely different part of the brain, allowing for a change in headspace and a break from an otherwise demanding and stressful workday. With this new productive hobby, the Clay Cave will certainly be your home away from home! The studio is meant to be a safe space and a place where there are no wrong answers or projects. Finally, at the end of each semester, we will hold an open ceramics gallery in which individuals can display their craftsmanship. - -Join our very own discord channel at https://discord.gg/SGj9t3QvVn !', '590', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('f79d7003-0acb-4289-8b1f-cf6ee3aa81b9', 'Climbing Team', 'The Northeastern Climbing Team is the official competitive rock climbing team sanctioned through Northeastern University Club Sports. The team continues to flourish as the best in the northeast division.', 'The Northeastern Climbing Team is the official competitive rock climbing team sanctioned through Northeastern University Club Sports. Founded in 2014, the team continues to flourish with the highest ranking in the northeast division. - -Our 24-person team currently trains at the Central Rock Climbing Gyms in Watertown, Cambridge, and Randolph, MA. Tryouts are held during September for the fall semester and are open to all undergraduate or graduate students. The team competes in the Northeast Region of the USA Climbing Collegiate Series, as well as participating in other local competitions. - -In addition to competition-related endeavors, Northeastern Climbing Team members give back to the community through volunteer events and outreach. The team has partnered up with organizations such as The Access Fund and One Summit to facilitate a positive impact in the community, and is continually pursuing ways to do so on the local and global scale. - -Club Climbing is dedicated to its core principles of supporting climbers of all backgrounds in the world of competitive climbing. ', '497', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b493b28b-c86c-4623-ac56-0cc42cda3cd9', 'Club Baseball', 'The Northeastern University Club Baseball team is a competitive intercollegiate organization at the D1 National level. The program was established in the Fall of 2005. In its history, the team has won a National Collegiate Baseball Association (NCBA) ..', 'The Northeastern University Club Baseball team is an intercollegiate organization competing at the D1 National level. The program was established in the Fall of 2005. In its history, the team has won a National Collegiate Baseball Association (NCBA) National Championship, as well as three New England Club Baseball Association (NECBA) championships. To learn more about the team please contact nuclubbaseball@gmail.com with questions.', '430', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('ab164b35-9ec3-4d2b-8007-92081c1f1343', 'Club Esports at Northeastern University', 'Northeastern Club Esports is an organization housing all of the Competitive Esports titles at Northeastern. Various games are available such as Rocket League, Valorant, Overwatch, League of Legends, and several others.', '*** IMPORTANT ***If interested, please join a connected discord server using this link: linktr.ee/gonuesports - -Tryouts and all other club information will be through these servers. Thanks! - -https://www.youtube.com/watch?v=VqTKboT84qM', '608', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('76a52892-f13b-40a9-8dd3-b0bb71243d90', 'Club Sailing Team', 'We are a COED team that competes in the intercollegiate sailing association. ', 'We are a team that competes in the intercollegiate sailing association.', '546', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a09e48ca-4bd7-42b5-8921-6f8b9cbe3e05', 'Code 4 Community', 'C4C is a student organization at Northeastern focused on developing and maintaining software solutions for non-profits in Boston. We empower our members via workshops, while enabling them to connect with, give back to, and support the local community.', 'Code4Community (C4C) is a student organization at Northeastern University focused on developing and maintaining software solutions for non-profit organizations within Boston. We empower our members via mentoring and workshops, while enabling them to connect with, give back to, and support the local community they live in. C4C strives to deliver work engineered with excellence and led by inclusive design principles to ensure our solutions are intuitive, performant, and deliver the best user experience.', '143', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('4bb4dd74-837b-471a-bd32-fbaabd5988e4', 'COE PhD Council', 'The COE PhD Council is the official PhD student-led liaison between the PhD students of the Northeastern COE and the administrative body of the COE.', 'We are a student organization dedicated to fostering a sense of community among STEM enthusiasts. Our mission is to bring together students from various engineering disciplines, creating a vibrant space for collaboration, networking, and shared experiences. Through a series of engaging events, workshops, and social gatherings, we aim to strengthen the bonds within our diverse community, encouraging cross-disciplinary interactions and knowledge exchange. Join us as we embark on a journey to unite the brilliant minds of the College of Engineering, forging connections that transcend academic boundaries and enhancing the overall STEM experience for every student. Together, let''s build a supportive and inclusive community that propels us towards success in our academic and professional pursuits.', '273', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('35cd3be1-3bf2-4205-aca9-616ff954b153', 'College of Science Student Diversity Advisory Council', 'COSSDAC intends to create an inclusive community for diverse undergraduates who identify as underrepresented in the sciences and offer resources for academic, professional, social and post-graduate success.', 'COSSDAC intends to create an inclusive community that supports and strengthens undergraduates who identify as underrepresented in the sciences, connecting all members of diverse groups (race, learning abilities, gender, ethnicity, sexual orientation) whilst providing academic, professional, and post-graduate resources. Through the construction of a space where others can create change; we aim to craft a legacy, adding to the roads by which students can find interpersonal support among advisors, garner perspectives from their peers, play an active role in the community that surrounds us, and begin to take advantage of the opportunities afforded to them. Cultural inclusion is the root of understanding and progress, and thus, we aim to empower today''s students to become the leaders of science of tomorrow.', '551', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('dab66b71-5760-42a0-906a-07a1a50d9144', 'ColorStack at Northeastern University', 'A supportive organization created to help Black & Latinx Computer Science Students to complete their degrees and gain rewarding technical careers.', 'The ColorStack chapter at Northeastern University, an organization that focuses on increasing the number of successful Black and Latinx computer science students. The initiatives include providing academic and professional support, as well as social and community engagement opportunities, to support access, placement, retention, and attraction at all levels. Through ColorStack, the goal is to make a meaningful difference in the lives of Black and Latinx students and improve representation in the technology industry. The belief is that by providing support and resources to these individuals, a more diverse and inclusive industry can be created that benefits everyone. Ultimately, the goal is to contribute to a more just and equitable society where everyone has the opportunity to succeed and thrive.', '146', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('2d151ef0-938d-4aeb-8407-f66f3b606aa4', 'Computer Science Mentoring Organization of Northeastern University', 'The Computer Science Mentoring Organization (CoSMO) is open to all Northeastern students interested in Computer Science. This organization serves to better connect various majors, combined majors, minors and non-majors who have a passion for Computer S...', 'The Computer Science Mentoring Organization (CoSMO) is open to all Northeastern students interested in Computer Science. This organization serves to better connect various majors, combined majors, minors and non-majors who have a passion for Computer Science. The main function of this club will be to matching mentors and mentees together, as well as provide events and workshops to help students connect with their peers. Such events could include, but would not be limited to: student panels regarding different majors, co-ops, or research, student-lead workshops on various technical skills, and non-academic affinity events to better connect students outside the sphere of classes. - - - -Join our mailing list to keep updated to our upcoming events!', '865', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('dc3ce9ed-d64d-45a7-b962-f9756259ba2c', 'Consulting & Advisory Student Experience', 'The purpose of this organization is to provide students with the training, resources, experience, and knowledge to pursue co-op and full-time positions in consulting and advisory services.', 'The Consulting & Advisory Student Experience (CASE) is a student-run undergraduate organization that provides insightful presentations, events, workshops, and other activities to help students learn more about, engage with, acquire and practice the skills required to excel in the consulting industry. CASE serves as a forum connecting Northeastern students from all majors with professionals in the industry, faculty members, and Northeastern alumni to equip our members for careers in consulting. Furthermore, CASE establishes partnerships with firms and current professionals to explore further consulting opportunities.', '51', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('e25ec7c0-2652-4409-ba77-b7d01d976bd1', 'Coptic Orthodox Student Fellowship', 'This club will serve as a meeting space for all Orthodox (Coptic Orthodox students are the main audience, but all other Orthodox students are encouraged to come) students to pray and discuss topics relevant to their faith and culture.', 'The Coptic Orthodox Student Fellowship serves all of Northeastern University’s Orthodox Students. The organization was created by Coptic Orthodox students, but we welcome all other Orthodox students (Oriental Orthodox*, Eastern Orthodox, and Greek Orthodox). We also welcome all other students interested in the Coptic Church culture, faith, and history. - - - -* By Oriental Orthodox, we are referring to the Armenian Apostolic Church, the Syriac Orthodox Patriarchate of Antioch and All the East, the Malankara (Indian) Orthodox Syrian Church, the Ethiopian Orthodox Tewahedo Church, the Eritrean Orthodox Tewahedo Church, and of course the Coptic Orthodox Church of Alexandria. - - - -—— - - - -In our meetings, we pray and discuss topics relevant to our faith. We gather weekly for prayer, worship, and Bible study, make memories together, and share in the blessings of spiritual outreach and community service. We attend and pray the Divine Liturgy at the St. Paul & St. John Chrysostom Coptic Orthodox Church of Boston currently located at 5 Park St.', '755', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('86219681-e680-4f36-a7a9-95d281afe244', 'Council for University Programs', 'CUP is the official programming board providing campus-wide entertainment for the Northeastern University student body. We are run by students, for students. - - - -We plan the majority of events on campus, including Springfest & Homecoming!', 'CUP is the official programming board providing campus-wide entertainment for the Northeastern University student body. We are run by students, for students. - -We plan a wide variety of events on campus, including Northeastern''s signature Springfest Concert (Drake, Snoop Dogg, Charli XCX anyone?) and Homecoming Headliner (Dan Levy & Annie Murphy, Ali Wong, Hasan Minhaj). We also plan regular FREE events throughout each month such as concerts, showcases like comedy shows, Q&As, and drag shows, and many other special events! - -We have a very open and welcoming environment, there are no fees or applications to join, no penalty for missing meetings, we just want to give everyone the opportunity to learn about the entertainment industry and booking process, and make some pals along the way :) - -All we ask is that you sign up for our newsletter if you want to be notified about events on campus. Sign up here!', '490', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('c4f8b6ff-eef0-43da-9167-0ceef9720e94', 'Criminal Justice Student Advisory Counsel', 'CJSAC is a student group open to students of all majors designed to enhance the Criminal Justice major and also to act as a liaison between students and faculty. We discuss current events in the field of criminal justice and the impact that they have o...', 'CJSAC is an organization open to students of all majors designed to enhance the Criminal Justice major and diversify the voices involved in discussions around our justice system and policing, through experiential learning, speaker series, investigating and analyzing criminal and civil cases, and diving into the inner workings of the Boston criminal justice system, By expanding the mission of the School of Criminology and Criminal Justice, CJSAC builds a wider network for students to take full advantage of their time at Northeastern. Events we host include documentary screenings, self-defense classes, LSAT Prep information, courthouse tours, and much more.', '47', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a2e169ec-3450-4c8e-a1be-ad25f04a9fc9', 'Criminology Forensic Science and Neuropsychology of Criminal Minds Club of Northeastern University', 'A club for anyone (all majors welcome) with interests in criminology and forensic science! We welcome a wide range of topics and interests and plan on holding events that range from guest speaker seminars to criminal TV game nights! ', 'Our club seeks to bring together people who share interests in the realm of criminology. This can include students pursuing degrees in criminal justice, psychology, behavioral neuroscience, biology, chemistry, biochemistry...or really anyone with aligning interests! We welcome a wide range of topics and interests within criminal justice and forensic science and plan on holding events that range from guest speaker seminars to criminal TV game nights.', '97', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5766548c-7b8c-4f51-ac1c-42a3b465613b', 'Criminology-Criminal Justice Graduate Student Association', 'For graduate students in the School of Criminology and Criminal Justice to:1. Engage in improving knowledge and scholarship through active engagement in and dialogue with the Northeastern and Boston communities.2. Facilitate strong relationships...', 'This organization serves all masters and doctoral students in the School of Criminology and Criminal Justice. We seek to (1) Engage in improving knowledge and scholarship through active engagement in and dialogue with the Northeastern and Boston communities, (2) facilitate strong relationships through a social network for students invested in the field of criminal justice and criminology, (3) foster a healthy graduate student culture in which students can develop academically as well as professionally, learn, and establish long-lasting relationships with fellow students and faculty, (4) advance contribution to the field through service and scholarly achievement, and (5) establish a united environment and integrated forum of expression and growth for future leaders in criminology and criminal justice', '157', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('95b13530-00b8-44d2-a5ec-a4107aa432cc', 'Cruelty-Free Northeastern', 'Cruelty-Free Northeastern (CFN) is a student-led organization focused on creating conversation about vegan living. Anyone who is curious about veganism or the plant-based movement is welcome! ', 'Cruelty-Free Northeastern (CFN) is a student-led organization focused on elevating discourse around vegan living. Our organization is dedicated to providing a safe space for anyone to learn more about the different aspects of veganism, and why it is not only a moral imperative, but essential in order to mitigate climate change, environmental degradation, future pandemics, antibiotic resistance, and racial and social injustice. We welcome students of all backgrounds. - -We also have a focus on advocacy, with a dedicated team. Our team is currently hard at work on an initiative to increase plant-based choices at Northeastern and the Boston area and creates social media content that shares information related to the vegan movement. - -In the past, we have hosted potlucks, restaurant outings, guest speakers, documentary showings, and more. We have also worked with other activism organizations and plant-based businesses. - -We welcome anyone to join, regardless if you''re vegan, vegetarian or an omnivore. - -Join our mailing list - -Follow us on instagram', '760', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('8c6259cb-9198-42e0-b84c-69ba32830aa6', 'CSC Game Room', 'The Curry Student Center Game Room', 'The Curry Student Center Game Room', '780', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('64003b38-b495-4e6f-b5d9-1e97ef6829d7', 'CSI Test Organization', 'This is a test account for CSI.', 'This is a test account for CSI. - - - - ', '323', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('2dcdd4a8-4c6d-4def-8268-4726be585821', 'Data Analytics Engineering Student Organization', 'DAESO is a graduate program based student organization. We want to build a platform where students from all disciplines can come and learn more about the fields of data analytics, data engineering and data science for career or academic purpose.', 'The purpose of DAESO is to build a platform where students from all disciplines can come and learn more about the fields of data analytics and data science. The organization seeks to mentor incoming students about the course, provide a constant support for all the current students with their curriculum, enhance their knowledge of the applications of data analytics in the real-world industry and develop a network of professionals in the industry that students can reach out to. Student members will learn the different career paths in analytics like data science, data analytics, data engineering and business intelligence and how best they could shape their profile to set their foot and thrive in the industry. Lastly, we aim at spreading awareness of the Data Analytics Engineering program at Northeastern.', '40', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('98ff28fb-ab4c-4f99-8f7e-10e7d71113ea', 'DATA Club', 'To promote data literacy in all disciplines', 'DATA Club provides speakers, workshops, data challenges, and overall support for students to pursue their interests in data.', '302', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('063a13a8-0dcd-4d5b-9191-24cd426b17ed', 'Delta Alpha Pi International Honor Society', 'Delta Alpha Pi is an honor society dedicated to recognizing the academic achievements of students with disabilities. The purpose of the society includes raising disability awareness within the university and the surrounding communities.', 'Delta Alpha Pi is an honor society dedicated to recognizing the academic achievements of students with disabilities. The purpose of the society includes raising disability awareness within the university and the surrounding communities. We meet every other Monday at 7 PM throughout the fall and spring, in EV 102. - - - -***Due to Coronavirus, we will not be hosting meetings for the rest of Spring 2020***', '343', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('03650e7d-8909-4608-b6bf-b29abf62c689', 'Delta Kappa Epsilon', 'The Nu Alpha Chapter of the Delta Kappa Epsilon International Fraternity. - - - -Founded on June 21st, 2019. - - - -Where the candidate most favored is equal parts gentleman, scholar, and jolly good fellow. - -', 'The Nu Alpha Chapter of the Delta Kappa Epsilon International Fraternity. - -Founded on June 21st, 2019. - -Where the candidate most favored is equal parts gentleman, scholar, and jolly good fellow.', '436', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('38de0f70-3e05-4f81-9e59-69d3fb27b5bc', 'Delta Phi Epsilon', 'Phi Eta Chapter of Delta Phi Epsilon Sorority. Chartered 1969 on Northeastern''s campus. Founded on the principals of Sisterhood, Justice and Love.', 'Phi Eta Chapter of Delta Phi Epsilon Sorority. Chartered 1969 on Northeastern''s campus. Founded on the principals of Sisterhood, Justice and Love. - - ', '884', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('ec436418-2545-4197-8a14-69cdd5127e8a', 'Delta Sigma Pi', 'Delta Sigma Pi is a professional fraternity organized to foster the study of business in universities; to encourage scholarship, social activity, and the association of students for their mutual advancement by research and practice.', 'Delta Sigma Pi is a professional, co-ed, business fraternity for Business and Economic majors at Northeastern. Our four pillars are professional activities, scholarship, community service, and social activities and we plan different events in each of these categories throughout the year. We are able to combine a life-long brotherhood and professional network with business development. For more info just send us a message! - --------------------------------------------------------------------------------------------------------------- - -Organization Mission Statement: Delta Sigma Pi is a professional fraternity organized to foster the study of business in universities; to encourage scholarship, social activity, and the association of students for their mutual advancement by research and practice; to promote closer affiliation between the commercial world and students of commerce, to further a higher standard of commercial ethics and culture for the civic and commercial welfare of the community.', '177', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a3cc4d9d-e0b4-4d14-80d1-3bf2031e1ccd', 'Delta Sigma Theta Sorority, Incorporated', 'Delta Sigma Theta Sorority, Incorporated was founded on January 13th, 1913 on the campus of Howard University by twenty-two young and determined undergraduate women. Their vision was to promote a better enriching world of social welfare, academic excel...', 'Delta Sigma Theta Sorority, Incorporated was founded on January 13th, 1913 on the campus of Howard University by twenty-two young and determined undergraduate women. Their vision was to promote a better enriching world of social welfare, academic excellence, and cultural enrichment while de-emphasizing the social side of sorority life. The Iota Chapter of Delta Sigma Theta Sorority, Incorporated, formally known as the New England Chapter, was the first chapter of any black sorority in the New England Area. Iota chapter was chartered on December 29, 1921, and it is the ninth chapter of the sorority. The sorority’s First National President, Sadie T.M. Alexander, and Virginia Alexander came from Grand Chapter in Washington, D.C. to initiate the women who had hopes of becoming members of Delta Sigma Theta Sorority, Inc. Iota Chapter was initially a mixed chapter that consisted of undergraduate and graduate women. The chapter’s charter includes, Berklee College, Boston University, Emerson College and Northeastern University.', '861', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('0ab8dd8e-c49d-4587-a94c-0840547c14f3', 'Delta Tau Delta', 'Delta Tau Delta is a values-based organization and fraternity. Our mission and values are offered to the public as a representation of the core values contained in our Ritual. All Delt men live by a common mission: "Committed to Lives of Excellence."', 'Delta Tau Delta is a values-based organization and fraternity. Our mission and values are offered to the public as a representation of the core values contained in our Ritual. All Delt men live by a common mission: "Committed to Lives of Excellence." All programs offered by the Fraternity reflect our values, and are designed to help the men of our Fraternity reach the level of excellence for which we all strive. Here at Northeastern University, Delta Tau Delta was Chartered in March of 2014. As a Fraternity, we strive to uphold our values and commit to our own mission statement here at Northeastern, "Committed to a Higher Standard"', '649', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('880afe62-9636-4519-aac9-e897cb6c07e7', 'Delta Zeta Sorority, Xi Upsilon', 'The Delta Zeta Sorority was founded nationally in 1902 and locally at Northeastern University in 1989. We were founded on the principles that make up our six pillars: sisterhood, social, service, scholarship, standards and self. Every day, we strive to...', 'The Delta Zeta Sorority was founded nationally in 1902 and locally at Northeastern University in 1989. We were founded on the principles that make up our six core tenants: generosity, belonging, empowerment, friendship, citizenship, and curiosity. Every day, we strive to live our lives regarding these values. Through sisterhood activities, social events, and an academic mentoring program we continuously strive to achieve excellence in each other and ourselves. Xi Upsilon prides itself on our strong bonds of an incomparable sisterhood and a balanced life.', '1', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('906332c9-4835-4e7a-be9f-28e242ab7837', 'Department of Marine and Environmental Sciences Terra Society', 'The Terra Society organizes events that supplement our members’ education in the Earth & Environmental sciences.', 'The Terra Society organizes events that supplement our members’ education in the Earth & Environmental sciences. We provide students with a chance to work with professors in the Earth & Environmental Sciences department and network with students in similar disciplines. Past Terra Society programs have included field trips, potlucks, hosted speakers, and professor presentations that aim to broaden our knowledge of the natural world. The Society is open to all students and welcomes anyone interested in the areas of ecology, environmental science, marine science, geology, environmental studies, and sustainability.', '362', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('0d63d8d3-774c-4887-abd2-ca62c3c92b7e', 'Digital Illustration Association', 'A welcoming, open-minded community that fosters passion for digital illustration for all levels of experience and connects artists to patrons. We support each other through drawing parties, art challenges, and supportive critiques. We''d love to have you!', 'Welcome to DIA! We''re a welcoming, open-minded community that fosters passion for digital illustration for all levels of experience and connects artists to patrons. We support each other through drawing parties, art challenges, and supportive critiques. - -We''d love to have you! Join our Discord server, where we chat and host meetings, and check out some of our members'' artwork. - -Or, look at our pretty website.', '623', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b7596646-74ba-4e5e-bce3-98fc451db789', 'Disrupt', 'Disrupt aims to inform, empower, and connect the next generation of students interested in the growing space of Finance Technology (FinTech).', 'Disrupt aims to inform, empower, and connect the next generation of students interested in the growing space of Finance Technology (FinTech).', '664', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5fe7c175-f7c4-461b-bcaa-a79122b26b77', 'Distilled Harmony A Cappella', 'As one of the most successful collegiate A cappella groups in the Boston area and one of three co-ed a cappella groups on campus, Distilled Harmony prides itself in quality vocal music performance.', 'Distilled Harmony is one of the many collegiate a cappella groups in the Boston area, and one of three all-gender a cappella groups at Northeastern University. In addition to hosting shows on campus and singing with other groups in the area, they often participate in various competitions such as the International Championship of Collegiate A Cappella (ICCA). They have placed highly in both quarter and semifinal competitions, and have won Best Choreography, Outstanding Soloist, and Outstanding Vocal Percussion awards in previous years. - -Additionally, they have recorded two studio albums as well as an EP, which have garnered awards from Contemporary A Cappella Recording (CARA) and Voices Only. They like to be competitive and take their music seriously, but never lose sight of having fun! Feel free to check out their Spotify at Distilled Harmony, and all other social media @DistilledHarmonyNU to stay up to date will all things DH! - -Want to learn more about us? Check out this video! https://www.facebook.com/watch/?v=2970521202999818 - - - -Want to hear us sing on our new EP “Mirage”? Check it out! - -https://open.spotify.com/album/2JiSCBhXuT7wpFHAVqkqyt?si=Vd90qLHnSF6ovlObz2gXHg', '582', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('9cb59962-92f5-4eff-a8ed-15a5374489b8', 'Diversability', 'We’re Diversability! We’re a club all about supporting and uplifting disabled and neurodivergent students at Northeastern, though we are open to all! We''re committed to promoting advocacy, education, and collaboration within the Northeastern community.', 'Hello everyone! We’re Diversability! We’re a club all about supporting and uplifting disabled and neurodivergent students at Northeastern, though we are open to all! As a club started by disabled students, for disabled students, we want to offer a new perspective in the disability narrative and give disabled students a chance to support themselves and each other. We have 3 goals: - -- Educate both disabled and abled people about disability issues and topics - -- Innovate to ensure that Northeastern is accessible for people of all abilities - -- Collaborate with Northeastern clubs, students, staff, and other disability organizations to work on projects around accessibility - -We accept all non-disabled and abled people in this club! Whether you’re here for education, a desire to support disabled people, or just curious, we’re excited to have you here! - -Join our discord!', '656', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('12ee8ced-5fdf-4384-a2c6-b563e7134d60', 'Downhillers Ski and Snowboard Club', 'We run buses to the best mountains in VT, NH, and ME every weekend the university is in session from January to March. Come shred and meet fellow skiers & boarding at our season meetings and trips!', 'We run ski trips to the best mountains in VT, NH and ME every Saturday that the university is in session from January to March. There is no membership fee and sign-ups for buses are on a week-by-week basis so you can pick which weekends you want to ride. We look forward to seeing you on one of our trips!', '313', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a3737b0f-3683-4da7-b553-e23f73edfe3d', 'DREAM Program at Northeastern University', 'DREAM Program at Northeastern University is a mentoring program that pairs NU students with children living in affordable housing in Madison Park Village and Orchard Gardens in Roxbury, MA.', 'DREAM Program at Northeastern University is a mentoring program that pairs NU students with children living in affordable housing in Madison Park Village and Orchard Gardens in Roxbury, MA. We strive to teach our mentees that they can have successful futures and go to college if they stay determined and motivated. We work in unison with our community partners to serve the residents of these neighborhoods meaningfully. We pride ourselves on our dedication to the program, our mentees, and each other.', '429', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('58f5c3d2-c359-4e9f-baf8-fc90963e89bb', 'ECONPress', 'ECONPress is an editorial journal exclusively showcasing undergraduate economic research. Started in the Spring of 2009 by motivated individuals with a passion for economics, the journal has continued to publish papers addressing a variety of topics. ', 'ECONPress is a publication showcasing undergraduate research. We receive econometrics papers from students and evaluate whether to publish them in our end of year journal based on whether they contribute to the existing body of research on a topic. We also discuss current events and interesting topics in economics. - - - -Students of all majors and backgrounds are welcome to join. Meetings are held weekly on Tuesdays from 7-8pm. - - - -If you have any questions or want to learn more, please email us or check out our website. - -Email: nueconpress@gmail.com - -Website: https://web.northeastern.edu/econpress/', '574', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b03c58f2-e195-4d8d-a599-5e0497f2810f', 'EcoScholars', 'EcoScholars is an organization of Northeastern students who work with local elementary schools and afterschool programs to provide climate change and environmental education appropriate to their grade levels.', 'EcoScholars is an organization of Northeastern students who work with local elementary schools and afterschool programs to provide climate change and environmental education appropriate to their grade levels. - -Our mission is two-fold: to conduct lessons and programming at schools and to develop and publish a curriculum library for use by other organizations. We seek to help students in and beyond Boston understand the science behind climate change, the many implications of climate change, and how they can help fight it. In particular, climate change will affect future generations as the temperature of our planet increases, so it is important that young students are educated and aware from a young age. Students who are interested in environmental science, environmental engineering, teaching, science, and/or have an interest in sustainability, teaching and the impacts of climate change are encouraged to join. Most of the students we teach are grade students during scheduled after-school programs. - -We have weekly meetings to introduce the club to new members and set expectations for teachers. After the start of programming, we have biweekly meetings explaining and reviewing the upcoming lessons in classrooms. - - - -We mainly communicate via email/Instagram (@bostonecoscholars) - -Subscribe to emails here: http://eepurl.com/dluRQn - - ', '830', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('72edaaad-3206-4ced-b3b9-d935405de7b1', 'Electric Racing at Northeastern University', 'Come design, build, and test with Northeastern Electric Racing as we create an electric, formula style car from scratch in a single school year, and compete in competition with teams from around the world!', 'Join Electric Racing at Northeastern University, and participate in a dynamic, action packed engineering competition. We design, build, and test all-electric Formula-style cars, with which we compete in annual competitions each spring and summer. We have mechanical, electrical, business, and software subteams. If you are at all interested in what we do, we have something for you! - - - -No matter your prior experience or your interests, Northeastern Electric Racing has a place for you! Below are just a few things we do across our interdisciplinary teams: - -▪ Mechanical: CAD, design simulations, power tools, machining - -▪ Electrical: circuit design and prototyping, soldering, custom battery design - -▪ Business: coordinating projects, writing code, managing finances, designing marketing materials - - - -------- Info Session ------- - -Please check out our Instagram @nuelectricracing for updates on our new member info sessions! This year''s will be on January 9th at 9 pm in Richards 300.', '781', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('848ef5eb-b703-4641-a89e-784917003abc', 'Elite Heat', 'Elite Heat is dedicated to training for obstacle course races like Spartan and Tough Mudder. We are open to all skill levels and have practice twice a week, host monthly events, compete in various intramural sports, and attend races throughout the year.', 'Elite Heat is an organization dedicated to training for obstacle course races like Spartan, Rugged Maniac, and Tough Mudder. We are open to all skill levels and have practice twice a week, host monthly events, compete in various intramural sports, and attend races throughout the year. For practice, we hold strength-based HIIT workouts on Mondays and more cardio-based workouts on Thursdays. As a club and a community, we believe obstacles are meant to be overcome rather than stand in our way.', '998', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('cf38457d-91a5-491b-89e6-d24029a8a6a5', 'EMPOWER Weightlifting', 'EMPOWER Weightlifting is a weightlifting club that serves to teach all levels of gym-goers a wide range of topics, from proper lifting technique to adequate nutrition. We focus on inspiring females to gain confidence in the gym.', 'EMPOWER Weightlifting is a weightlifting club that serves to teach all levels of gym-goers a wide range of topics, from proper lifting technique to adequate nutrition. The purpose of EMPOWER is to inspire weightlifters to gain confidence in the gym and to provide a safe place to build a strong community around fitness. EMPOWER will focus on uplifting women in the fitness space and will host several exciting events every semester, like fitness industry guest speaker events, group lifts, public gym outings, fun social events, and informative meetings. The 3rd floor of Marino isn''t as scary as you think! Join us!', '374', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5ee085a9-3861-4f00-9b2a-9644feb13f08', 'Encounter Every Nation Campus Ministries of Northeastern University', 'Encounter is a group that seeks to Encounter God, His Love, and His gifts and to help others do the same. Based out of small groups, we build families of God-centered people so they may feel connected and supported in Northeastern, Boston, and beyond.', 'Encounter is a group that seeks to Encounter God, His Love, and His gifts and to help others do the same. Based out of small groups, we build families of God-centered people so they may feel connected and supported in Northeastern, Boston, and beyond. The Bible says that when two or more are gathered in His name, He communes with us. Our groups center on the Bible and it’s Gospel - or Good News - and seek to 1.Encourage Christians and non-Christians in learning about the gifts of the spirit and encountering God through Biblical teaching, 2. Engage students in Gospel-centered conversations and help people encounter the Good News through small group discussion, and 3. Equip students to continually grow and adapt to the progression of campus life at all stages through mentorship and community. We are always open to people from all faith backgrounds, all places, and all walks of life. Encounter longs to bring people home.', '22', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6a5b9d23-5f38-41be-992b-62d613842634', 'Engineers Without Borders', 'EWB is an entirely student-led organization working with communities in Guatemala, Uganda and Panama to provide accessible drinking water. The group was started in 2004 and is a part of EWB-USA, a national nonprofit with 250 chapters in the U.S.', 'EWB is an entirely student-led organization working with communities in Guatemala, Uganda and Panama to provide accessible drinking water. The group was started in 2004 and is a part of EWB-USA, a national nonprofit with 250 chapters in the United States and projects in over 45 countries around the world.', '385', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('70f36e73-251b-445a-9af4-a0a96da80ee4', 'English Graduate Student Association', 'The EGSA, a student group officially acknowledged by the University, includes all graduate students in the English Department at Northeastern, but primarily functions as a small group of elected representatives. Its mission is to ensure and improve the...', 'The EGSA, a student group officially acknowledged by the University, includes all graduate students in the English Department at Northeastern, but primarily functions as a small group of elected representatives. Its mission is to ensure and improve the quality of the graduate programs, promote the professional development of graduate students, develop policies and procedures that benefit graduate students, encourage faculty-student communication, and foster collegiality among members of the department through cooperation between graduate students, faculty and staff in the English Department.', '777', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('49dc7465-7dd5-4f1e-8f52-12a80c3f382c', 'Entrepreneurs Club', 'The NU Entrepreneurs Club is Northeastern University''s largest student organization. Our 1000+ members attend our 4 programs, including soft/hard skill workshops, community initiatives, an executive speaker series, and a venture incubator. ', 'The NU Entrepreneurs Club is Northeastern University''s largest student organization. Our 1000+ members come from a diverse set of backgrounds to attend our 4 programs, including workshops, community initiatives, an executive speaker series, and a startup incubator. Our community is now global and you can get involved in Northeastern Oakland and London campus! ', '289', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('c1b69a04-f42b-4162-afbb-6f838065da85', 'Environmental Science and Policy Leaders for the Environment', 'ESP-LFE is primarily an organization for Northeastern’s Environmental Science and Policy graduate students. Our purpose is to improve academic and professional development to its members, while also enriching the lives of the Northeastern student body. ', 'ESP-LFE is primarily an organization for Northeastern’s Environmental Science and Policy (ESP) M.S. program for graduate students. Our purpose is to provide leadership experience, facilitate alumni interactions, increase career development and professional enrichment opportunities, and offer opportunities for service and community involvement. As students of the Northeastern ESP program, we intend to give support to individuals prior to their acceptance at Northeastern, during their enrollment, and beyond their graduation. Most importantly, this organization intends to build environmental leaders within each cohort that exists within our program. - -We plan to support young adults interested in environmental science and policy through mentoring and guidance programs, educating them on career options, and advancing their aspirations. Northeastern students will have the opportunity to recommend specific courses to other students, create individualized career tracks, and attend networking and career events. With the increasing intensity of climate change impacts and other sources of anthropogenic disturbance, new and innovative solutions are required that are not currently addressed in the curriculum. ESP-LFE provides a voice for the students to advocate for new classes and coursework that addresses these evolving issues. Post-graduation, members will have access to diverse alumni mentorship that is specific to their chosen major or career and enables them to find resources and opportunities that may be otherwise unavailable. - -Finally, and most importantly, this group aims to build diverse and equitable leadership opportunities as far as our network can reach. As the social, economic, and political issues surrounding climate change continue to worsen, there is a growing need for leaders and experts that can help develop environmental and policy solutions. ESP students are engaged and equipped to fill this role within our local, national, and international community. Whether this takes the form of events or fundraisers for issues such as climate change awareness, hosting seminars for prominent leaders, or simply having a safe place to voice anxieties around current and emerging socio-political and environmental issues, this group will be a focal point for all of those interested.', '810', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('4986e524-a387-431b-98c5-397a708b3ea1', 'Eon Dance Troupe', 'Eon Dance Troupe is a classical, ethnic, and fusion dance group that strives to promote awareness for the rich culture and history behind Chinese dance while fostering a community that welcomes dancers of all experience levels and cultural backgrounds.', 'Eon Dance Troupe expresses culture through our classical, ethnic, and fusion dances. Through our performances, we hope to promote awareness of the rich history and diversity within Chinese dance. Eon seeks to engage and foster community by interacting and collaborating with organizations in the Northeastern community and in the Greater Boston area through dance performances and cultural events. With our non-audition policy, Eon welcomes dancers of all experience levels and cultural backgrounds to learn, perform, and bond with one another. - -Follow us on instagram to keep up with announcements and updates! - -MAILING LIST: Sign up for weekly updates!', '247', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('14244dab-1757-4dca-a0ad-70ef22f8b0fd', 'Eta Kappa Nu', 'Eta Kappa Nu, Gamma Beta Chapter, is Northeastern Universities Electrical and Computer Honor Society. HKN is Committed to the advancement of academic and professional success of Northeastern ECE students who are both members and non-members. HKN provi..', 'Eta Kappa Nu, Gamma Beta Chapter, is Northeastern Universities Electrical and Computer Honor Society. HKN is Committed to the advancement of academic and professional success of Northeastern ECE students who are both members and non-members. HKN provides tutoring services and organizes information sessions for students interested in research and graduate studies, as well as opportunities for scholarship, alumni outreach, and so on.', '206', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('4e10d8e3-829b-48c0-8c9d-8183063d1b82', 'Ethiopian and Eritrean Student Association ', 'Our mission is to showcase our exceptional culture by promoting harmony among Ethiopian and Eritrean students. ', 'Our mission is to showcase our exceptional culture by promoting harmony among Ethiopian and Eritrean students. We want to establish a place where students of Ethiopian and/or Eritrean background, as well as those interested in the two cultures, can come together to communicate and form relationships in order to foster social and cultural cohesiveness within our community. We, the Ethiopian and Eritrean Student Association, also known as EESA, strive to cooperate with other Ethiopian-Eritrean groups in adjacent universities in addition to working with the other multi-ethnic organizations here at Northeastern. - -We will strive to unite students through shared heritage, tradition, and knowledge. We will work to inform and educate students about significant cultural concerns that impact both their local and global communities. We will educate and enlighten our members on the history, customs, and current affairs of the two East African nations. We will endeavor to provide a setting where members can interact and succeed both intellectually and socially. We will invite students who are interested in learning more about Eritrea and Ethiopia. We will promote togetherness among the group''s participants, and WE WILL WELCOME EVERYONE.', '521', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6d298ba4-4ec7-413b-aa6d-1e8be6715c8f', 'Evolve', 'Evolve is a student-led fund and accelerator that empowers early-stage healthcare and life sciences ventures in Northeastern’s entrepreneurial ecosystem to take the next step in their development. ', 'Evolve is a student-led fund and accelerator that empowers early-stage healthcare and life sciences ventures in Northeastern’s entrepreneurial ecosystem to take the next step in their development. At the same time, we provide students with experiential learning opportunities and connect them with entrepreneurs, industry experts, and investors.', '682', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('7ecb1661-f674-4d21-8282-e95581c72da2', 'Family Business Consulting Club', 'Family Business Consulting Club mission is to teach and broaden students'' understanding of consulting through interactive projects and workshops run by students-for students. We do this education and project based work with family businesses.', 'The Family Business Consulting (FBC) Club is the first of its kind at Northeastern. We focus on providing management consulting services to family-owned businesses of all sizes. - -Consulting projects we take on include financial analysis, sales optimization, customer/competitor analysis, growth strategy, new product development and more. - -Consulting teams are 4-5 people in size, with an experienced team lead and team members of all experience levels.', '938', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('717a1103-1d28-4759-aa60-d025edbb96ed', 'Feminist Student Organization', 'The Feminist Student Organization (FSO) is a Northeastern University student group committed to promoting discussion, debate, and action as it relates to feminism and its many intersections in society.', 'The Feminist Student Organization (FSO) is a Northeastern University student group committed to promoting discussion, debate and action as it relates to feminism and its many intersections in society. FSO is a discussion-based group which also coordinates community outreach and programming, and thrives on diverse opinions and lively discussion. - - - -Meetings are fully in-person – Thursdays from 8-9pm at Curry Student Center room 144 (aka the Center for Intercultural Engagement [CIE]).', '331', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('0f5d835d-d1ed-465f-8994-4893c8f6aa23', 'Fiction Addiction Book Club', 'Fiction Addiction is a book club open to all Northeastern students. We read roughly one book a month and meet bi-weekly to discuss them. We also attend BPL book sales, host Blind Date with a Book, book-movie night adaptations, & other fun reading events!', 'Fiction Addiction is a book club open to all Northeastern students. We read roughly one book a month and meet bi-weekly to discuss them. Contrary to the name of the club, we don''t just read fiction! Monthly book club picks are chosen by general member voting on book nominees recommended by all members of the club. We also attend BPL book sales, the Boston Book Festival, local author signings and book store visits. Our club also hosts and annual Blind Date with a Book event, book adaptation movie nights, and collaborations with other clubs related to the books we are reading. This club is for anyone who has an interest in reading or enjoys discussing literary topics with others. - - - -Join our Mailing list HERE! - -Join our Discord server HERE! - -Follow us on Instagram! - -Friend us on Goodreads!', '670', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('77a1edc7-a5d1-4192-9002-c712b24fd445', 'Fighting Game Club at Northeastern University', 'FGCNU is a way to foster an environment of healthy improvement and practice. The purpose of FGCNU is to help the members of FGCNU practice their hobby of fighting games and provide opportunities for the members of FGCNU to attend tournaments.', 'FGCNU is a way to foster an environment of healthy improvement and practice. The purpose of FGCNU is to help the members of FGCNU practice their hobby of fighting games and provide opportunities for the members of FGCNU to attend tournaments. FGCNU’s mission is to practice, improve, compete, and have fun while playing fighting games, all while creating an environment where the members of FGCNU can ask questions, experiment with their play, and review and criticize matches.', '548', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('8f3d37d7-1241-41ee-816e-85585c592d60', 'Finance and Investment Club', 'The mission of the Finance and Investment Club is to support the development of future financial professionals not only in their field, but in the university and the community at large. Through career-oriented activities such as weekly presentations b...', 'The mission of the Finance and Investment Club is to support the development of future financial professionals not only in their field, but in the university and the community at large. Through career-oriented activities such as weekly presentations by guest speakers, faculty members, and Northeastern alumni, students are given the opportunity to learn about various career paths and useful information that will help them advance in the workplace. The Finance and Investment Club meets weekly on Mondays from 6-7pm.', '487', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5a54dfa0-65b9-4e74-b4b5-8d3ba03c18c4', 'Finance Board', 'The Northeastern SGA Finance Board provides allocation, analysis, and oversight of the Student Activities Fee (SAF).', 'The Finance Board is responsible for allocating the Student Activity Fee for a wide variety of events on campus for the undergraduate student body at Northeastern University. Every student organization that has been recognized by the Student Involvement Board and the Center for Student Involvement has the opportunity to request funding from the SAF Fund through the Finance Board. Campus-wide events, which include but are not limited to speakers, comedians, concerts, and cultural events are encouraged. Furthermore, annual budgets, equipment budgets, publication budgets, and supplemental budgets are also heard by the Finance Board. The Board strives to fund student organizations in the most equitable way with greater emphasis on events that encourage collaboration between student organization, events that mirror the student organization’s goal, and events that create the most value for the undergraduate student body.', '520', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('02ec7c51-3bfd-42ae-ac34-b9bc0fba203c', 'Finance For the Community', 'Finance For the Community (FFC) is a volunteer-based organization that instructs high-schoolers in the Boston area on personal finance topics. Anyone can join regardless of their current personal finance or public speaking skills.', 'Finance For the Community (FFC) is a volunteer-based organization that teaches personal finance to Boston Public High School students. New members will learn FFC''s simple financial literacy curriculum then instruct BPHS students through the use of small group activities, presentations, and games. No background knowledge or experience with personal finance is required. You can attend as many or as little teaching sessions as you want. - - - -Why Join? - - - -Engage with the community and help improve the lives of local students. - -Become financially fit and get a hold of your own personal finances. - -Boost your resume. - -Practice public speaking. - - - -Meetings: Mondays, 7-8 pmJoin here: http://bit.ly/ffcemail', '703', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a8c7ed2d-f0d5-4572-a7c4-3c37fea4e6bd', 'First and Foremost Literary Magazine', 'First and Foremost Literary Magazine features art and literature made by first-gen, low-income, and undocumented students and their allies. First and Foremost was created to be a platform for these communities to share their creativity and thoughts.', 'First and Foremost Literary Magazine features art and literature made by first-gen, low-income, and undocumented students and their allies. First and Foremost was created to be a platform for these communities to share their creativity and thoughts.', '646', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5a626302-85a7-495f-bd46-872e740bf4bf', 'First Generation | Low Income Student Union', 'The First Generation Low-Income Student Union—a vibrant student-led organization bridging the information and support gaps that impact low-income and first-generation college students. Join us in driving advocacy, programming, and building a community.', 'Welcome to FGLISU - the student-led organization that strives to empower, support, and connect with first-generation and/or low-income college students. - -Discover a range of dynamic workshops and events designed to bridge the gap of information and resources. From financial literacy to college acceleration, we cover an array of topics to empower our community. - -Come join us on Thursdays at 6 PM in the CIE (144 First Floor Curry)! Join our Slack here.', '677', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b9203d3a-dd72-4b20-adae-351a1330ee62', 'FIRST Robotics Team 125 - The NUTRONs', 'FIRST is a international organization promoting STEAM to high school students through robotics. The NUTRONs are a team led by professional and college mentors that participate in this competition, mentoring and teaching high school students.', 'FIRST is an international organization promoting STEAM to high school students through robotics. The NUTRONs are a team led by professional and college mentors that participate in this competition, mentoring and teaching high school students. While this student group is focused on recruiting mentors for the FRC Team 125, the NUTRONs, we also accept members interested in volunteering for all FIRST events including FIRST Lego League and FIRST Tech Challenge.', '621', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('8eeedfb1-2b0b-4a5b-9bc4-e5036300503f', 'FirstByte', 'FirstByte provides educators with the materials, curricula, and support to teach computer science and engineering, regardless of budget or technical background.', 'FirstByte, founded in 2017, is a Northeastern student-run organization that provides educators with the resources to teach computer science and engineering, regardless of budget or technical background. We are building an online library of engaging curricula and loaning out technology kits for free so that every classroom has the opportunity to learn about computer science and engineering. Additionally, our one-on-one support helps teachers adapt each lesson to fit their own unique classroom. - - - -While FirstByte’s current audience is local middle school teachers, our organization has the potential to reach educators of any grade or institution, both in Boston and beyond. Our online database of curricula is accessible worldwide, and the scope of this curricula will grow as other educators begin to contribute their own lessons. - - - -FirstByte has already participated in and held a variety of events, such as the BPS Parent x University STEM Cafe held at Northeastern, where we demonstrated projects from our MaKey MaKey curriculum for students of all ages to interact with. FirstByte held a professional development event for Boston Public School teachers at the Campbell Resource Center, where we demonstrated the technology kits available as part of our loaner program, as well as how to upload and download curricula on our website. We continued our outreach pursuits by holding an event entitled “Women in Tech: from Student to Teacher” at the Ann Taylor store in Cambridge, in which we led a discussion with five diverse panelists about breaking barriers within technology education. Our goal was to inspire students and teachers alike to learn about technology, and show them that although it may seem hard at first, technology education is accessible to everyone. FirstByte members also regularly attend monthly ScratchEd Meetups at the Harvard Ed Portal, where we participate in technology education conversations and meet new teachers to collaborate with. In the future, we intend to continue hosting and attending events such as these.', '52', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('2d434677-7947-4868-8795-c1798fa57c26', 'Food Allergy Awareness Club', 'FAAC is an organization open to everyone that aspires to spread awareness regarding allergies/dietary restrictions in a fun and creative way! Additionally, we work to share resources and offer support to students with dietary restrictions on campus. ', 'FAAC is an organization open to everyone that aspires to spread awareness regarding allergies/dietary restrictions in a fun and creative way! Additionally, we work to share resources and offer support to students with dietary restrictions on campus. ', '523', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('87168e5f-903a-403e-a0fa-b101de3f6a30', 'Food Recovery Network', 'Join us for daily food recoveries: delivering surplus food that would otherwise be thrown away to local homeless shelters.', 'Food Recovery Network is Northeastern’s first student-led food recovery program. Our program mainly consists of running daily food recoveries: delivering surplus food that would otherwise be thrown away to local homeless shelters. Our goal is to bring awareness to and reduce food insecurity and food waste within our community. - -Join our Discord to get involvedurl: https://discord.gg/q832ARPf5u - -Feel free to reach out to us at neufoodrecovery@gmail.com or follow our Instagram for updates: nufoodrecovery - - ', '760', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('7248654e-c897-4cd7-a75d-c6a62d445547', 'Friends of MSF Chapter at Northeastern University', 'FoMSF is an all-inclusive student chapter of Doctors Without Borders (MSF) aiming to raise awareness about MSF''s work in the field and global humanitarian crises via fundraising, research, and advocacy work.', 'Find us on Mondays, 6-7pm in 001 Cahners Hall in-person and virtually! - -Purpose Statement: To raise awareness and knowledge about MSF’s work in the field and global health crises by fundraising MSF’s work, encouraging students to get involved in their community, and raising awareness of medical humanitarian issues via advocacy campaigns and informational resource creation. - -Description: - -As an affiliated student chapter of the Doctors Without Borders non-profit organization, we aim to raise awareness and knowledge about MSF’s work in the field and global health crises by fundraising MSF’s work, encouraging students to get involved in their community, and raising awareness of medical humanitarian issues via advocacy campaigns and informational resource creation. We will accomplish our goals by actively fundraising for the Doctors Without Borders organization, engaging in volunteer efforts at NEU and within the local community, hosting prominent guest speakers from NEU, Doctors Without Borders, and other organizations, and more. In addition, the Friends Of MSF chapter at NEU will help students of any major find a path by which they may aid in humanitarian efforts around the world. - -MSF Student Chapters aim to: - - - -Raise awareness and knowledge about MSF’s work in the field and about humanitarian issues - -Encourage students to consider working with non-governmental organizations, such as MSF, post-graduation - -Support MSF in advocacy campaigns - -Raise money for MSF, their work in the field, and specific campaigns - - - -What do we do? - - - -Spread awareness of MSF’s activities and mission - -Provide educational and community service opportunities - -Foster engagement of Northeastern students in the health of our local community - -Conduct research to develop advocacy campaigns for polarizing medical humanitarian issues that students at Northeastern may not be aware of - -Provide professional development opportunities for students to help them acquire meaningful community service opportunities, develop the career-essential skills they need to succeed in both interviews and a professional setting such as a co-op, and learn more about a variety of healthcare disciplines and how they may fit onto that path even if they are not necessarily on the pre-health track - -', '948', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a79d6d94-b4be-4533-b4d0-353884b443a3', 'Game Studio Club', 'A multidisciplinary community of student game developers interested in learning how to make games. Have a dream game idea or a rule set you want to implement? Want to practice skills like art, programming, story-telling, etc? Come to Game Studio Club!', 'A multidisciplinary community of student game developers interested in learning game development by making games. Have a dream game idea or a rule-set you want to implement? Want to practice skills like art, programming, story-telling, etc? Come to Game Studio Club! Join our Discord and check out our Club Website!', '474', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('15729dee-2327-4fa7-9c97-3ae0d0181674', 'Genetics Club', 'Northeastern’s inaugural Genetics Club hopes to cultivate a supportive community of aspiring genetic counselors to help them learn about the burgeoning career and prepare for master’s programs.', 'Northeastern’s inaugural Genetics Club hopes to cultivate a supportive community of aspiring genetic counselors to help them learn about the burgeoning career and prepare for master’s programs. - -This interdisciplinary field involves many interests: namely biology, human services, psychology, and communication. Genetic counseling celebrates the marriage of science and people, and we strive to do just that. Beyond genetics, GCSIG will teach and foster compassion, medical ethics, and interpersonal skills. To strengthen the community, we plan to host both informational sessions and have one on one activities with current students and professionals in the field. - -Looking to join our email list? https://forms.gle/xwFfZNZwQN8Lq52Q8', '537', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('00e4557b-57dc-44e0-b2f3-74335c249d88', 'German Club of Northeastern University', 'The GCNU provides a gathering space for German native speakers (from Germany, Austria, Switzerland etc.), students learning German, and anyone who would like to grow their knowledge of German culture and language.', 'The GCNU provides a gathering space for German native speakers (from Germany, Austria, Switzerland etc.), students learning German, and anyone who would like to grow their knowledge of German culture and language. We hold fun events on-campus such as Sprachstunde, co-op panels, film nights, as well as occasional off-campus events and Germanic holiday events. ', '453', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('0f136ff2-5ef3-4608-9825-d2455e90991d', 'Give a Hand', 'Give a Hand is a Northeastern University Club made up of a diverse student body. Our goal is to design, fabricate and build affordable 3D printed prosthetic hands and transform a prosthesis from a luxury item to an affordable device. ', 'Give a Hand is a Northeastern University Club made up of a diverse student body from Engineers, Designers, Business Majors, etc. Our goal is to design, fabricate and build affordable 3D printed prosthetic hands for people near the bay area who were born with a hand malformation or got an amputee. The exorbitant prices of bionic hands can go from $15,000 to $70,000 USD making them inaccessible for the wider population. As members of https://enablingthefuture.org/, a global network of volunteers, we hope to expand their impact. The Innovation in design and manufacturing could transform a prosthesis from a luxury item to an affordable device. The process of fabricating the hands is complex but not extremely difficult to learn and teach. The goal is to gather as many students as possible and find people in need of a prosthetic and build them one. These devices are extremely affordable costing under 50 dollars each. We hope to fundraise money so that the patient will get a device under no cost. Furthermore since most of the receivers are children the design is extremely flexible and they get to pick the colors, design and themes. The idea is to create a local network of volunteers and transform how medical devices are viewed. We currently have our own website where we go more in depth about our mission and the devices we fabricate (​​https://www.giveahandclub.org/). ', '809', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('500f3a05-d88b-450f-895a-03f16371b0c1', 'Global Dental Brigades', 'Global Dental Brigades aims to promote oral health via education and through volunteering in communities abroad by helping provide oral health services. ', 'Global Dental Brigades is a branch off of the larger organization, Global Brigades, whose focus is on promoting oral health. Global Dental Brigades aims to provide care and education to communities abroad in a sustainable fashion so that these communities can carry out this care on their own after our trips. Global Dental Brigades is aimed at pre-dental students as well as other students interested in the healthcare field or those interested in humanitarian work abroad. As a chapter on campus, our goal is to recruit students who are interested in global volunteer work and to hopefully raise money to hold a brigade in the future. The chapter would likely hold fundraisers for future brigades, work closely with other Global Brigades on campus, and raise awareness about the importance of oral health. The chapter would also provide oral health education to the community via flyers, virtual presentations, and collaborations with other healthcare clubs on campus. ', '539', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5ef447dc-74b7-4a11-8102-55157e99ccd7', 'Global Journal for International Affairs', 'The Global Journal for International Affairs is both an online and print publication. The Global Journal will allow students, faculty, alumni and Co-Op employers to share their International Affairs experience with the Northeastern community. The Glo...', 'The Global Journal for International Affairs is both an online and print publication. The Global Journal will allow students, faculty, alumni and Co-Op employers to share their International Affairs experience with the Northeastern community. The Global Journal is not limited to International Affairs students; it welcomes all students of the Northeastern community who have gone abroad through NU.in, Dialogue, or international Co-Op. We want to hear your stories and experiences, gather your tips and tricks, and share this information with students and staff campus wide.', '534', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('23927bf8-bf5c-4283-a517-d6c28438545b', 'Global Markets Association', 'Providing opportunities for students to engage with and further their knowledge & understanding of existing and emerging markets in China.', 'The Global Markets Association provides Northeastern students with opportunities to engage with and further their knowledge & understanding of existing and emerging markets all over the globe. - - - -We have weekly meetings in which we analyze the current state of a specific global market (such as Real Estate, Foreign Exchange, Private Equity, etc.), and discuss the potential implications that current events may have on the future outlook of that market. Meeting formats include presentations on the current state/relevance of a particular market, Q&A sessions with guest speakers, case study analyses, and educational workshops that are tailored to our members'' more specific interests in a particular market. Additionally, we provide opportunities for students to join our research team and get involved in researching various global markets and publishing research reports. - - - -At GMA, we strongly believe that understanding the world''s economy is key to understanding our current world. Through providing opportunities to analyze and explore global markets through multiple lenses, we strive to help students gain a holistic perspective of various countries and their relevance in our world.', '928', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('2413469c-1902-49cf-b9dc-a055d2b21bd1', 'Global Medical Brigades', 'The mission of Medical Brigades is to work with licensed medical professionals and community health workers to provide comprehensive health services in rural communities with limited access to healthcare in Greece and Honduras. ', 'The mission of Medical Brigades is to work with licensed medical professionals and community health workers to provide comprehensive health services in rural communities with limited access to healthcare. Our current partners are Greece, Honduras, Ghana, and Panama where Medical Brigade volunteers have the opportunity to shadow licensed doctors in medical consultations and assist in a pharmacy under the direction of licensed pharmacists. Members also get the opportunity to develop interpersonal connections by triaging patients and taking vitals (blood pressure, heart rate, respiratory rate etc.). Our Chapter''s focus is to raise funds and supplies needed for Northeastern students to engage with communities abroad, while also gaining valuable insight into global development and building sustainable solutions abroad. - - ', '996', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('3b4f091f-820a-4602-8c25-ba7ac02d0e8e', 'Global Research and Consulting Group - Northeastern Branch', 'GRC is a community of passionate students from a variety of cultural and academic backgrounds who collaborate with non-profits from around the world to complete pro bono consulting and research projects. ', 'The Global Research & Consulting Group "GRC" is a community of passionate students from a variety of cultural and academic backgrounds who collaborate with non-profits from around the world to complete pro bono consulting and research projects. Our mission is to help global NGOs and social impact startups achieve their goals while simultaneously empowering students to give back to the global community. - - - -In total, GRC has over 1,000 members and alumni across 20 chapters in top universities (Harvard, Stanford, Oxford, Wharton) in North America, Europe, and Asia. We are officially registered as a 501(c)3 non-profit organization and complete several experiential strategic advisory and insights projects every semester. - - - -Follow us on Instagram @grcnortheastern or email us for more information! Visit our website and learn more about GRC.', '793', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('fa53bec8-d416-47dc-b8e8-8d349cc928de', 'Global Student Success (Campus Resource)', 'GSS provides English-language, academic, and cultural support to Northeastern''s international and non-native English-speaking students, scholars, faculty and staff though the International Tutoring Center and numerous workshop series and classes.', 'GSS provides English-language, academic, and cultural support to Northeastern''s international and non-native English-speaking students, scholars, faculty and staff though the International Tutoring Center. GSS provides one-on-one English-language tutoring focusing on: Reading, Pronunciation, Presentations, TOEFL, Career preparation, Conversation, Writing- Planning, Writing- Grammar, Writing- Organization, and Writing- Citations. GSS also offers Reading Workshops, Writing Workshops, Language and Culture Workshop series, as well as a non-credit Listening and Speaking course. GSS and ITC services are open to all international and non-native English-speakers in all programs, colleges, and campuses.', '248', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('1de638bd-2c03-4085-9a80-48bc2d53aeae', 'GlobeMed', 'We are the Northeastern chapter of GlobeMed! Our 3 main functions are:• Fundraise for our hygiene and sanitation project in Masaka, Uganda to alleviate poor health caused by unclean water.• Organize on-campus events to educate students ', 'We are the Northeastern chapter of GlobeMed! Our 3 main functions are: - -• Fundraise for our hygiene and sanitation project in Masaka, Uganda to alleviate poor health caused by unclean water. - -• Organize on-campus events to educate students about our projects and related global health issues. - -• Serve internationally alongside our partner organization, Kitovu Mobile LTD, and locally in the community. - -Email us at northeastern@globemed.org if you''re interested in joining! Here is the link to view the recording of our information session https://drive.google.com/file/d/1nMVcBqGW6hDI74Lmj2NhYLFB80U3ULMP/view?usp=sharing', '1014', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('1f15dbd6-fafe-4a25-bbde-26b05ba5ab64', 'Goldies Dance Team', 'Goldies is a Northeastern University based dance team focused on exposing students in the Boston area to open style dance culture and opportunities', 'Goldies is a Northeastern University based dance team focused on exposing students in the Boston area to open style dance culture and opportunities. Our main goal is to provide opportunities for students to perform and grow as dancers in a productive but judgment-free environment. Ultimately, we hope to inspire dancers to involve themselves in the greater East Coast dance community.', '794', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('ebc1a82e-d284-441e-8c03-f35c422c3041', 'Graduate Consulting Club', 'Graduate Consulting Club aims to provide education and mentorship to graduate students who are interested in consulting, and help create meaningful connections with professionals in the industry. ', 'Graduate Consulting Club aims to provide education and mentor-ship to business students who are interested in consulting, and help create meaningful connections with professionals in the industry. The club will provide a platform to practice and promote skills needed in the consulting sphere and foster leadership and expertise.', '87', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('1bb913cc-4e88-44f9-970b-8ac7822d330d', 'Graduate Student Education Research Association', 'GSERA facilitates and promotes the transition from graduate student to practitioner, educator, and/or researcher. GSERA is Northeastern''s campus chapter of the American Education Research Association (AERA), a national community of education researchers.', ' - -Northeastern University''s Graduate Student Education Research Association (GSERA) facilitates and promotes the transition from graduate student to practitioner, educator, and/or researcher by providing opportunities within Northeastern, the American Educational Research Association (AERA), and associated regional organizations for growth, development, and advancement. - - - - - -In addition, GSERA seeks to help the Northeastern Graduate School of Education students navigate the obstacles, rewards, challenges, and support networks of academic life. - - - - - -Through AERA and in conjunction with the Northeastern Graduate School of Education faculty, GSERA offers students a rich array of programs and services through the AERA divisions, special interest groups, and the AERA Graduate Student Council. Students interested in exploring opportunities in professional development, mentoring, and networking can engage with scholars around the world and other graduate students across the country. - - - - - -GSERA embraces its five major responsibilities: - -1. Community building, experiential learning, and networking - -2. Student advocacy - -3. Self-governance - -4. Information and research dissemination - -5. Meeting and event planning', '614', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('0a4fcbfb-2113-46ad-a79b-2fe4641eda6f', 'Graduate Student Government', 'The Graduate Student Government (GSG) is the official voice for graduate students at Northeastern University. GSG addresses concerns, raise awareness, and promotes graduate student life on Huntington Avenue and abroad. Our primary goal is to enrich th...', 'The Graduate Student Government (GSG) is the official voice for graduate students at Northeastern University. GSG addresses concerns, raises awareness, and promotes graduate student life on Huntington Avenue and abroad. Our primary goal is to enrich the graduate experience at Northeastern and we do so through funding and research support, sponsoring social and networking events, and providing a forum for graduate students to present concerns, issues, and ideas to Northeastern University administration, faculty, and staff. Please visit our website for meeting location and additional information at http://www.northeastern.edu/gsg/. - - ', '272', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d1dd90f4-0e5b-427b-8bf5-d50db9159482', 'Graduate Students of Color Collective', 'The purpose of the GSCC is to build community for graduate students of color at Northeastern University by promoting education, professionalism, and civic duty. The GSCC fosters student, staff, and faculty relationships to establish a campus home for h', 'The purpose of the GSCC is to build a community for domestic and international graduate students within the Black, Indigenous, and People of Color (BIPOC) on all Northeastern University Campuses by promoting education, professionalism, and civic duty. The GSCC fosters BIPOC student, staff, faculty, and alumni relationships to establish a campus home for higher education at Northeastern. Through civic engagement with surrounding communities, the GSCC recognizes the continued struggles of marginalized populations, and the need for those who have succeeded in giving back.', '805', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('db0db8b5-9414-4577-952b-43776ca28368', 'Graduate Women in Science and Engineering', 'GWISE is a group of graduate students and postdocs designed to assist in the professional and personal advancement of women in science and engineering at Northeastern University. GWISE strives to provide women with the support and resources necessary ...', 'GWISE is a group of graduate students and postdocs designed to assist in the professional and personal advancement of women in science and engineering at Northeastern University. GWISE strives to provide women and other underrepresented groups with the support and resources necessary to be successful, as well as to create a sense of community. To achieve this, GWISE will sponsor events covering a wide variety of topics including networking, career options, balancing work and personal life, and other issues affecting womxn in the sciences. Become a member by subscribing to our mailing list by emailing gwise.neu@gmail.com with the subject line "Subscribe." Check out our linktree to stay up to date https://linktr.ee/NortheasternGWISE! - -Our mission: To identify and break down the barriers limiting the representation of women of all backgrounds in STEM careers and empower their participation and advancement. - -Our vision: equitable STEM fields for women of all backgrounds.', '760', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d40a2f07-9dfb-48e4-ad34-f6ffb8cb4287', 'Green Line Records', 'Northeastern University''s student-run record label', 'Green Line Records is Northeastern University''s student-driven record label. Based in Boston, Massachusetts, our label aims to accelerate the careers of emerging artists. We offer our diverse lineup of artists a full range of services including studio and live recording, marketing, merchandising, booking, and management. For more than two decades, Green Line Records has served as the hub where learning and local arts collide.', '935', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('02dd47a8-9754-4c9e-9421-832f4d5f44c2', 'Hawaii Ohana at Northeastern University', 'HONU accepts people of all different backgrounds who have an interest in Hawaii’s culture. Our organization is here to be a hanai ''ohana (adoptive family) to students at Northeastern who want to keep connected with home and share our local culture!', 'With Northeastern expanding its reach around the world, an increasing number of students from Hawai''i are enrolling at the university. The growing population of Hawai''i students in the Boston area can benefit from connecting to each other through our shared background. Thus, the Hawai''i Ohana at Northeastern University (HONU) was formed to bring together people who the share the Aloha spirit. Not restricted to those originating from Hawaii, HONU accepts people of all different backgrounds who have an interest in Hawaii’s culture. Our organization is here to be a hanai ''ohana (adoptive family) to students at Northeastern who want to keep connected with home. We also want to share our state’s unique traditions through fun activities and events. On a broader scale, we hope to connect with other students in the area to build the Boston/Hawaii network.', '261', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('aef74eca-0898-46f5-a5b1-632cae970d7d', 'Health Disparities Student Collaborative', 'The Health Disparities Student Collaborative (HDSC) is a group of students committed to building partnerships between schools, local organizations and communities in Boston aimed at addressing local health disparities.Born out of the Health Disparities...', 'The Health Disparities Student Collaborative (HDSC) is a group of students committed to building partnerships between schools, local organizations and communities in Boston aimed at addressing local health disparities. Born out of the Health Disparities and Higher Education Symposium in November 2007, the HDSC was founded by students who are alarmed that, despite its prestigious reputation as a hotbed of cutting-edge medical training, treatment, and research, Massachusetts is home to some of the most serious and shocking health disparities – particularly those affecting racial and ethnic minorities. Driven by a sense of responsibility and community, these students believe in utilizing the tremendous academic institutions and resources in Massachusetts in order to work with communities to close this gap. The HDSC is led by a central Leadership Committee that meets regularly to plan support, and publicize university-community collaborations, events, and activities. Mission: The Health Disparities Student Collaborative is a collaboration of students and community members who believe that together we can achieve health equity through education, advocacy and service.', '208', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('2d05b5c0-f7e5-4a56-ba3c-6f946c806616', 'Health Humanities Club', 'Are you interested in looking at healthcare in a new way? Or do you want to learn about interesting NUpath courses? Are you a health, humanities, and society minor and looking for a community within the minor? Come to our meetings to learn more!', 'Our organization provides students interested in the health humanities an outlet to explore this interest. The health humanities is an academic field that sheds light on how the different tools of the humanities can be integrated into medical practice as well as be used to analyze health as a whole. Many pre-health students have limited spaces in their schedule to take coursework related to this subject though. This is a void that we hope to alleviate! We will both enrich coursework as well as introduce the subject to members who have not taken health humanities coursework. ', '596', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('8328f618-7188-41e6-ba9b-40da53ecad27', 'Healthcare Management and Consulting Club', 'Healthcare Management and Consulting Club', 'Are you passionate about changing the healthcare industry? - -Do you want to see lower costs, better access, and more equity? - -HCMC is the first club of its kind, solely dedicated to preparing, networking, and guiding Northeastern undergraduates interested in the Healthcare Management & Consulting concentration. - -We strive to equip students with the skills for a successive post-academic career in one of today''s most innovative and expanding fields within the healthcare industry through the fostering of both a diverse and cohesive academic community. ', '362', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('7b806197-85dc-40d8-b38f-4e6bf1ec5ae0', 'Hellenic Society of Northeastern University', 'Northeastern University''s Hellenic Society created for fellow Greek students to mingle and network with each other. This group will focus on educating students about Hellenic culture, participating in Hellenic events throughout Boston, and spreading th..', 'Northeastern University''s Hellenic Society created for fellow Greek students to mingle and network with each other. This group will focus on educating students about Hellenic culture, participating in Hellenic events throughout Boston, and spreading the idea of "philotimo","friendship among members", to everyone who joins.', '7', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a3057c60-14c0-4414-809e-d974c4e3b8a5', 'Her Campus Northeastern', 'Her Campus at Northeastern is our chapter of Her Campus Media, the #1 digital publication run and curated entirely by female-identifying college students. We create and share articles and social media content daily.', 'Her Campus at Northeastern is our chapter of Her Campus Media, the #1 digital publication run and curated entirely by female-identifying college students. We create social media content and articles around mental health, news, pop culture, career, culture, style, and beauty content. Founded in 2009 by three Harvard grads, HC''s roots are close to home and we are proud to be one of Boston''s local chapters. We meet weekly on Mondays from 6:15-7pm in East Village 002. Find our Slack through our Instagram bio and learn how to join us!', '231', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('98caf9dd-d89b-410a-ab52-0627d139ddf8', 'Hillel Club', 'Hillel Club''s mission is to enrich the lives of Jewish undergraduate and graduate students so that they may enrich the Jewish people and the world. Hillel student leaders and professionals are dedicated to creating a pluralistic and welcoming environment', 'De missie van Hillel Club is om de levens van Joodse studenten en studenten te verrijken, zodat zij het Joodse volk en de wereld kunnen verrijken. Hillel-studentenleiders, professionals en lekenleiders zijn toegewijd aan het creëren van een pluralistische, gastvrije en inclusieve omgeving voor Joodse studenten.', '422', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('937fb8db-9d3c-4cef-81b0-2df0be46824b', 'Hindu Community of Northeastern University', 'The Hindu Communities at Northeastern University, founded on the sacred principles of the Vedas (timeless wisdom from Eastern tradition), promote the physical, mental, emotional and spiritual well-being of everyone through thought-provoking discussions', 'The Hindu Communities at Northeastern University, founded on the sacred principles of the Vedas (timeless wisdom from Eastern tradition), promotes the physical, mental, emotional and spiritual well-being of everyone through thought-provoking discussions, healing yoga/meditation practices, and healthy cultural demonstrations.', '548', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('9b8a96b2-a0c7-4ec9-b985-1d84321f26c5', 'Hindu Undergraduate Student Organization', 'HUSO’s mission is to help students cultivate strength and peace by connecting with the Hindu faith and wellness techniques while also fostering meaningful connections with their peers.', 'HUSO’s mission is to help students cultivate strength and peace by connecting with Hindu culture and wellness techniques while also fostering meaningful connections with peers. We come together to build a supportive, welcoming community on campus. - -Our events include: - - - -Pujas and Festival Celebrations - -Meditation and Wellness workshops - -Social Mixers - - - -ALL undergraduate students (regardless of race, gender, nationality, faith or no faith) are welcome.', '439', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('1acca48a-ed55-4656-afa5-edae4bf70c2e', 'Historical Review', 'The purpose of this club is to provide a historical research outlet for students outside of classes. NHR will allow students to research historical topics that they are interested in, receive editing advice from peers, and publish their research.', 'The purpose of this club will be to provide a historical research outlet for students outside of classes. Too often students have no avenue for research if a class is not offered on the subject. The goal of this club will be to create that avenue. NHR will allow both undergraduate and graduate students of any background to research historical topics that they are interested in, receive guidance and editing advice from peers, and publish their research to the public. NHR will publish a review once a year in print and online in a continuous manner.', '375', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6947079a-1d22-466d-a095-a3da8747f6c1', 'History Graduate Student Association', 'The History Graduate Student Association will provide an official social network for incoming graduate students, will facilitate communication between History graduate students, faculty in the History Department, and the College of Arts & Sciences. The...', 'The History Graduate Student Association provides an official social network for incoming graduate students and facilitates communication between History graduate students, faculty in the History Department, and the College of Arts & Sciences. The organization organizes academic events, conferences, and seminars on behalf of Northeastern''s History Department.', '59', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('4ad8385f-b5f9-4837-8e3c-382975aa5bc9', 'Hong Kong Student Association', 'The Hong Kong Student Association is a student organization in Northeastern University that aims to promote the unique Hong Kong culture and provide a taste of home to Hong Kong students.', 'The Hong Kong Student Association is a dynamic student organization that brings together students from Hong Kong or those interested in Cantonese culture, society, and current affairs. Through a combination of social gatherings, collaborative events, and food outings, the Hong Kong Student Association aims to provide a welcoming environment where students can connect and share new experiences.', '914', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('f75db770-a6ac-4533-955e-29b832f1a03d', 'Human Services Organization', 'The Human Services Organization strives to foster an inclusive community of students who are interested in the Human Services major or are passionate about social change by developing and hosting academic and social events. ', 'The Human Services Organization strives to foster an inclusive community of students who are interested in the Human Services major or are passionate about social change by developing and hosting academic and social events.', '863', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('e408a231-2bcb-4980-b4fb-d9ccac5b5085', 'Huntington Angels Network', 'Our organization connects Northeastern affiliated startups to strategic partners and investors in the Venture Capital ecosystem. ', 'Huntington Angels’ mission is to grow the University venture community by connecting startups with a global investor network and venture capital firms to fill the known gap of $25,000-$2,000,000 of angel funding and pave the way to the next round of VC investment. Made up of a dedicated team of students passionate about the Venture Capital industry, our team is dedicated to finding the right investors for the selected startups we vet out that suit our pipeline. - -Huntington Angels does not take equity positions in any ventures but serves as a vehicle to connect ventures with investors and help their growth.', '445', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('90e770a8-f127-4a0f-9372-4b2152306726', 'Huntington United Ski Nordic Club', 'Opportunity for cross country skiers and interested beginners to get on snow together. Works towards training for Dec-Feb intercollegiate racing league with beginner opportunities. Dryland on campus and on snow nearby. Come ski with us! - -', ' - - - - - - - - - - - - - -HUski Nordic is a new collegiate Nordic ski club created last spring to create an opportunity for cross country skiers and students interested in learning to get on snow together. We have tentative status under Northeastern''s "club" department (Center for Student Involvement, CSI), but are not a part of the "Club Sports Department". - -The team works towards training skiers for a Dec-Feb intercollegiate racing league, but also offers opportunities for beginners. We have weekly dryland practices on Northeastern''s campus and get on snow nearby. We''re open to grad students and tentatively open to students from nearby colleges. - -This is the first year the club has been running, so bear with us as we work on getting things organized! Also, please check out our main website here https://sites.google.com/view/huskinordic/home or by clicking the globe icon below! - - - - - - - - - - - - - -', '909', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d4992212-45be-440c-940d-bbf49328a670', 'Huskick‘s Sneakers Club', 'Huskick’s Sneakers Club is a non-profit organization that promotes sneaker history and culture, delves into current market trends of footwear in the fashion world, and hosts sneaker-oriented activities on and off campus for all students and sneakerheads.', 'Sneakers, a common footwear of the youth, are almost an indispensable part of many students'' childhood and even current daily life. They are more than just objects that we wear on our feet since they tell important stories and evoke certain emotions. Our goal and purpose here at Huskick’s Sneakers Club is to bring these unique, emotional and entertaining stories behind every sneakers together on campus and share them with as many huskies as possible. Through that process, Huskick’s Sneakers Club is committed to building our very own sneakers community for Northeastern University because we believe that every husky who is walking on the Huntington Avenue deserves his or her own sneaker story to tell. As we share our sneaker culture here at Northeastern, every husky is presented with various new opportunities to learn more about each other, as well as discover and dive deep into the sneaker world. Through sneakers, mentorships and friendships happened, history learning of footwear is promised, and most importantly, a vibrant cultural/special interest community is formed for generations to come. Thanks to the power of the internet and the influences of social media today, the exposure of sneaker culture is beyond overwhelming as it is covered in some of the hottest spots online aside from sneakerheads around us in real life.For more information, please feel free to join Huskick''s Discord server: https://discord.gg/ujjvyRAWAr - - ', '470', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('12b88afc-2652-4366-b8bd-b6bc165858c1', 'Huskies Club Ultimate Frisbee', 'The Huskies''s Club Ultimate Frisbee team has a place for everyone, fielding a nationally competitive A team in addition to developmental B and C teams. Whether you''ve played Ultimate for years or have never picked up a disc, we''d love to have you!', 'Want to join the program in the fall? Fill out this Google Form to get on our email list and stay updated: https://forms.gle/uNGW2ueL9PWQfV9N8 - - - -Also check out our 2019 & 2020 highlight video here: https://youtu.be/ufan6g4GLs4 - - - -The Northeastern University Ultimate Frisbee team was founded in 1998. Although we are a relatively young program, we are constantly improving ourselves on and off the field. Led by a passionate core, Northeastern Ultimate strives to transform itself from "team" to "program". Our A Team is nationally ranked and competes around the country, finishing T-13 at College Nationals in 2019. Our developmental B and C teams focus on the growth of our players, allowing players to hone their skills and move up to A team or simply find a relaxed and enjoyable team environment. Whether you''ve played Ultimate for years or have never picked up a disc, we''d love to have you!', '277', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('14f63889-eced-4f22-a677-0a5976e574e2', 'Huskies for Israel', 'Northeastern''s Israel education, culture, and advocacy student club!', 'We are Northeastern University''s Israel education and advocacy student group. It is a non-religious affiliated club and throughout the year we host a host of a variety of fun events, thought-provoking lectures, and general body meetings about Israel''s history, culture, current events, and innovation. If you go to Northeastern and have an interest in Israel, then this is the club for you! Check our Instagram and Facebook and subscribe to our email list to stay up to date.', '777', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('57639e08-48ea-474b-99dd-387d34520dcb', 'Husky Ambassadors (Campus Resource)', 'Husky Ambassadors are a distinguished group of undergraduate student leaders dedicated to providing campus visitors a glimpse into the power of a Northeastern education. We do this through a number of means including, but not limited to, leading campu...', 'Husky Ambassadors are a distinguished group of undergraduate student leaders dedicated to providing campus visitors a glimpse into the power of a Northeastern education. We do this through a number of means including, but not limited to, leading campus tours, staffing NU Preview Day and Welcome Day events, serving as lunch hosts and panelists, and consistently acting as a positive reflection of the University in our everyday lives. Additionally, there are many paid opportunities within Undergraduate Admissions that Husky Ambassadors are prime candidates for. Through the professional volunteer opportunities that Husky Ambassadors are involved in, we support admissions initiatives, which in turn support University initiatives. Our slogan is "We all have stories to tell. What will yours be?" With each visitor that we speak with, it is our goal to have shared all of our personal stories surrounding global experiential education, research, intellectual life, campus involvement, and Boston pride. By skillfully highlighting what has made Northeastern the correct fit for us, we hope to allow prospective students to see themselves in our shoes in the future. In addition to gaining important professional and leadership experience in one of the most impactful offices at Northeastern, you will be welcomed into one of the premiere student communities on campus, have the ability to participate in awesome on and off campus programs, and get the inside scoop on University wide initiatives and plans. With that in mind, we look for dedicated, professional, talented, organized, energetic students who are excited to share their Northeastern story.', '848', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('99e28aba-91f1-4b15-ae03-149e33009e79', 'Husky Communicators', 'We are a collaborative graduate student group that promotes experiential learning projects from around the College of Professional Studies. ', 'Husky Communicators is a student-led organization that focuses on helping students with a passion for communication thrive and connect. In addition, as an organization, we also focus on fostering community by strengthening knowledge and professional experience and providing peer support. - -While at Husky Communicators, students will have an opportunity to explore and tune in their skills through various teams. - -Website Management – Students learn the ins and outs of website management tools to create and develop website content for the following websites: Husky Communications and Inspire & Influence. - -Social Media – Students focus on creating and promoting content across various channels: Instagram, LinkedIn, YouTube, and TikTok. - -Event Planning – Students focus on developing & executing all the organization’s events. - -Writing – Students enhance their writing skills and have an opportunity to publish their unique pieces on our Husky Communications and Inspire & Influence website.', '757', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('bf9a3e7a-4aa0-4539-8ffd-430e57a5c89c', 'Husky Competitive Programming Club', 'Whether you want to sharpen your technical interview skills, compete among hundreds of collegiate teams worldwide, or simply just chill and make friends while you solve Leetcode-style problems, the Husky Competitive Programming Club welcomes you!', 'The Husky Competitive Programming Club seeks to be a group for students interested in the competitive side of computer programming. Whether you want to sharpen your technical interview skills, compete among hundreds of collegiate teams worldwide, or simply just chill and make friends while you solve Leetcode-style problems, HCPC welcomes coders of all skill levels! - - - -The gist of competitive programming is basically solving problems fast. "Fast" is both in the sense of algorithmic efficiency (big O) and in the sense of problem solving speed. That may sounds daunting but don''t worry. We aim to provide an iterative learning process via informative workshops and practical contests to teach you the skills and techniques needed to succeed. - - - -If competitions are your jam, we send several teams each year to compete in ICPC - the International Collegiate Programming Contest, where competitions are held at a qualifying, regional, divisional, national, and international level. Each contest consists of teams of 3 working together to solve a set of challenging problems in a set amount of time. Overall, it''s an intense time but a fantastic experience. If you''re looking for more competitions, websites such as CodeForces, USACO, and Hackerrank provide contests that we may occasionally take an interest in as well. - - - -If you aren''t interested in competitions, that''s fine too! The skills you learn through our contests and workshops is not only applicable to competitions, but also technical interviews and coding challenges. We invite you to come to our internal contests where you can make friends and brainstorm with others to solve challenging problems. In addition, our workshops aim to provide knowledge on various CP topics such as prefix sums, graph traversal, and dynamic programming. - - - - - -So come through to HCPC! We meet every week on Mondays 6:00 PM - 7:30 PM Eastern Time. Every meeting will be held in East Village 002. Hope to see yall there! - - - - - - - - - - - -If you''re interested, we invite you to sign up for our newsletter so you can be updated on what we''re up to and when/where we''re meeting. Also be sure to join our hub of communication via Discord, where we chat, bond, and post contest links so you can participate in our club, wherever you are. - -', '832', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('60af3c04-3c66-4524-ad49-611d9cae89f9', 'Husky Environmental Action Team', 'Husky Environmental Action Team (HEAT) is a student group working towards environmental sustainability and carbon neutrality at Northeastern University. We target issues such as food, waste, energy, divestment from fossil fuels, and recycling.', 'Husky Environmental Action Team (HEAT) is a student group working towards environmental sustainability and carbon neutrality at Northeastern University. HEAT raises awareness about sustainability issues at Northeastern University, works with the Administration of the University to establish and advance sustainability initiatives, and hosts events that promote responsible use of energy and waste. We target issues such as food, waste, energy, product life cycles, divestment from the fossil fuel industry, and recycling.', '1022', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('06854eca-e16c-4cad-b936-3701870f1706', 'Husky Systers Code', 'Coming together to build a Graduate Women community over a broad spectrum, right from building strong fundamental technical skills to confidently articulating and expressing our ideas and beliefs – enabling students to tap into their potential', 'As women in the graduate school, we realized the need for a platform for all our female students to come together, share, learn and grow. A platform that is a safe space for us to overcome our inhibitions and at the same time a space that challenges us to be better versions of ourselves - -When one woman helps another, amazing things can happen. Our aim is to Encourage and Build a strong community for our fellow women, over a broad spectrum, right from building strong fundamental technical skills to being articulate and confident about expressing their ideas and beliefs – enabling them to tap into their potential, their wisdom and apply it to real-world problem solving. - -We welcome every graduate woman in technical domain looking for a place to start or connect with her peers through the technical and skill shaping workshops, and personality tuning events organized by the club. ', '287', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6dcc6c21-b647-4fa0-be32-e911c274ad63', 'iGEM', 'iGEM is a worldwide annual competition that allows high-schoolers, undergraduates, graduates and postgraduates to design and create innovative approaches for a better future through synthetic biology. ', 'https://www.youtube.com/watch?v=WXy7ifxYRgw', '360', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b1405c53-a14e-45f1-8916-e511f6f81b7b', 'Indonesian Student Association', 'Indonesian Student Association at Northeastern University is a cultural student organization. Our mission is to unite and strengthen the Indonesian community as well as to promote Indonesian culture and tradition to the Northeastern community', 'Indonesian Student Association of Northeastern University is a cultural student organization. Our mission is to unite and strengthen the Indonesian community at Northeastern University as well as to promote Indonesian culture and tradition to the Northeastern Community.', '746', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6b58e39d-6bfb-43cc-b3b1-4dafeb78b635', 'Industry Pharmacists Organization', 'IPhO is the organization whose pharmacist members are universally recognized within the pharmaceutical industry as being the most professionally equipped to contribute to the development, commercialization, promotion, and optimal use of medicines.', 'IPhO is the organization whose pharmacist members are universally recognized within the pharmaceutical industry as being the most professionally equipped to contribute to the development, commercialization, promotion, and optimal use of medicines. IPhO Student Chapters are dedicated to enhancing student pharmacists’ understanding of the pharmaceutical industry by raising awareness of the roles that industry pharmacists play in drug development, drug safety, drug regulations and other aspects of industry.', '369', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('8c3d3076-495f-464f-8a02-f08514c049ac', 'Innovators for Global Health', 'Innovators for Global Health is dedicated to improving global access to healthcare through medical device design and innovation. Through IGH, students develop the skills and knowledge to tackle technical and design challenges with a global mindset.', 'NU IGH is composed of different groups that work together to promote global health through medical device access, including our Design Group and Campus to Country group. We maintain long-term global partnerships with hospitals and universities, including three medical facilities in Ghana, the University of Ghana, and Academic City University. With our partners, we work to develop low-cost medical devices and increase awareness of global health issues. We also lead yearly international trips to complete in-person needs-assessments at our partner facilities. - -Our Design Group is dedicated to designing and prototyping low-cost, sustainable medical devices tailored to the needs of low-resource hospitals. Recent design projects have included a surgical lamp, EKG electrodes, and a pulse oximeter. Currently, our projects include an oxygen regulator splitter, a medical suction pump valve/alarm, a low-cost hospital bed, and an infant incubator. Each of these projects was chosen based on in-person needs assessments at our partner hospitals. Design group is a great place to research medical device needs and problems, come up with creative solutions, and build engineering skills. This is the truly "engineering" portion of IGH, but you don''t need to have experience or even be an engineering student to contribute! - -Our Campus to Country group is dedicated to educating our members about global health issues and researching the commercialization of medical devices in low-resource nations. Thus, they seek to identify gaps in medical care faced by low-resouce nations and look for ways that these gaps can be sustainably addressed by the work of organizations like IGH and others. In addition, we work with local students and technicians to help them build engineering, design, and needs assessment skills. - -In addition to our main groups, we also often feature speakers in the global health field and conduct fundraising for our yearly international trips and design projects. - -Here is the video recording of our info session from spring 2023!', '447', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('8eba8f4c-5e07-4908-8c15-27bbe338b2ac', 'inSIGHT', 'Are you considering a career in the health sciences or would like to pursue a niche in the medical field? If so, inSIGHT may be for you! This is a club that will introduce potential members to the wonderful field of eye-health and what it consists of.', 'inSIGHT is an organization that provides a foundation for students interested in an eye-health-related field. We provide a network of professionals in the field including inviting optometrists, ophthalmologists, eye researchers, and optometry school representatives to share their insight into the eye care world. We also hold biweekly meetings to share scientific articles about the most recent advances in the "eye world,” talk about upcoming application due dates and testing strategies, and network with graduate programs to learn more about educational opportunities in this field. Overall, we aim to provide an inclusive, welcoming environment for all to figure out their career path!', '639', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('9e241979-b013-4774-b21b-b8ecfe153981', 'Institute for Operations Research and Management Sciences at Northeastern University', 'The Institute for Operations Research and the Management Sciences at Northeastern University', 'INFORMS serves the scientific and professional needs of Analytics Professionals and Operations Researchers including educators, scientists, students, managers, analysts, and consultants. The Institute serves as a focal point for analytics and O.R. professionals, permitting them to communicate with each other and reach out to other professional societies, as well as the varied clientele of the profession''s research and practice.', '366', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('c945dc51-b468-4293-a6f7-cc487a67c7ac', 'Institute of Electrical and Electronics Engineers', 'IEEE is the professional society for electrical and computer engineers at Northeastern! We have weekly chapter meetings with guest speakers from industry, advice sessions, or chances to meet professors. We run workshops and do community outreach too!', 'As a student branch of the IEEE (Region 1), IEEE at Northeastern University is the third largest student branch in the Boston Area. With an active membership of over 90 students and several IEEE technical societies, IEEE at Northeastern University strives to "promote the engineering process of creating, developing, integrating, sharing, and applying knowledge about electro and information technologies and sciences for the benefit of humanity and the profession". We at IEEE at Northeastern University believe this can be accomplished by enabling students with access to both the latest technological tools, as well as access to industry leaders who have been and/or are the vanguard of their engineering fields.', '627', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('051d0aad-50d8-4ce2-a9af-67c53119a85a', 'Institute of Industrial and Systems Engineers', 'We are Northeastern University''s chapter of the Institute of Industrial & Systems Engineers. NU IISE gives students the chance to learn more about Industrial Engineering through different industries and encounters with professionals. We provide opportu...', 'We are Northeastern University''s chapter of the Institute of Industrial & Systems Engineers. NU IISE gives students the chance to learn more about Industrial Engineering through different industries and encounters with professionals. We provide opportunities for students to meet and discuss current issues in IE, gain valuable leadership skills in their field, and actively participate in community service, among other things. NU IISE creates an environment where IE students can grow professionally and academically while having fun, bonding with classmates, and networking with industry professionals. - - - -Subscribe to Our Mailing List for meeting updates. - -Join Our Slack to discuss job opportunities, meeting logistics, and more.', '547', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('9da950b0-221a-46ef-bdac-5c938c6e6e69', 'Interfraternity Council', 'Register for the IFC recruitment process: https://ifcnu.mycampusdirector2.com/landing/', 'Our 12 recognized member and associate member chapters are: - - - -Alpha Epsilon Pi: Website | Instagram - -Alpha Kappa Sigma: Website | Instagram - -Beta Gamma Epsilon: Website | Instagram - -Beta Theta Pi: Website | Instagram - -Delta Kappa Epsilon: Instagram - -Delta Tau Delta: Instagram - -Kappa Sigma: Website | Instagram - -Phi Delta Theta: Website | Instagram - -Phi Gamma Delta (FIJI): Website | Instagram - -Pi Kappa Phi: Instagram - -Sigma Phi Epsilon: Website | Instagram - -Zeta Beta Tau (Associate Member): Instagram - -', '825', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d81599b5-0b57-4328-9140-2887c76fd6dc', 'International Business Club', 'The International Business Club is designed to provide members with a structured environment that''s conducive to gaining an understanding of international business topics through the opportunity to present semester-long research at semi annual conference', 'The International Business Club is designed to provide members with a structured environment that is conducive to conducting research and gaining an advanced understanding of modern international business practices and solutions. - -IBC provides members with the resources to conduct a semester-long international business study, and present their solutions to real-world international business problems at a semi-annual conference. This includes assisting members in reaching out to business professionals and interpreting complex geopolitical issues. - -Along the way, members will attain a high degree of confidence in topics relating to: - -Globalization, Conflict Resolution, Trade Compliance, Global Management, Strategy, and Ethical Reasoning - -We encourage students of all majors who are interested in international business to participate in order to learn about the global business machine and build a diverse network of aspiring global professionals.', '664', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('2be39040-2d97-4a31-bdca-cd6a466c0681', 'International Relations Council', 'The International Relations Council is the most interactive and integrated student group for Northeastern Students interested in foreign policy, international relations and the finer points of global politics. ', 'The International Relations Council is the most interactive and integrated student group for Northeastern Students interested in foreign policy, international relations and the finer points of global politics. Weekly meetings are complemented by collaboration with the Model UN, Model NATO, and Model Arab League courses offered by the Political Science Department as part of NU''s experiential education. The team attends numerous prestigious collegiate simulated conferences each semester in locations like Washington D.C. and Montreal and hosts our own various conferences for middle school, high school, and college students. There is simply no better way for students to engage in and discuss the most prominent international current events while perfecting debate and public speaking skills. If you are interested in joining us, feel free to send us an email at northeastern.irc@gmail.com for information about our current meetings and events. - -If you want to know more about what we do, check out this video from our info session for the Virtual Summer Involvement Fair a few years ago! - -https://www.youtube.com/watch?v=jf2BXvzJ3rg', '806', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6a12546b-afcb-4c0e-9c94-4dc4846c86b0', 'International Students in Business', 'ISIB hopes to assist international students integrate in the US workforce by helping find companies willing to sponsor international students and help develop members into global business leaders. Overall, we aim to build a safe community here.', 'Vision: ISIB hopes to be a resource in a club form that offers to primarily assist international students integrate in the US workforce and become global business leaders. - -One major setback that international students face when coming to study in the US, is the uncertainty of having viable job prospects in the US after graduation due to the Visa/Work Permit issue. Currently, US college graduates without a STEM major get 12 months of OPT and STEM students a total of 29 months. After this period, students must hope that companies will sponsor them for an H-1B visa, which very few companies do and these companies are also difficult to find. - -Additionally, the club also hopes to offer guidance to international student on how to be successful as internationals in the professional world, and how they should be able to utilize their skills to their advantage. - - - -Strategy: We hope to have our club consist of two components. The first component would be to have a research division to the club. The researchers would have the responsibility of researching & contacting companies for positions that offer sponsorship or offer to hire international students. In the long run we would hopefully be able to build relationships with these companies where we can hopefully send an international student every year to work there. The findings of our research will be available to all our members and we would also encourage members to have a genuine crowdsourcing mentality, where if they find a position that does not require sponsorship, that they share it with the rest of the group members. - -Alternatively, we would also like to bring in guest speakers, in a group discussion setting, to give members the opportunity to talk and discuss on how to be successful international professionals. Researchers and Eboard members in our club would also be responsible for reach out to potential guest speakers. - - - -Objectives: The three objectives we have are Place & Educate & Serve. We want to place as much of our international members into secure jobs after graduation. We want to educate the international student body on how they are able to be global leaders by bringing in proven professionals in an array of fields to offer advice and guidance. Lastly, it is also important to serve. This is done by researchers in the club and general members sharing jobs that they have found that do not require sponsorships to all other members of the club. We would highly encourage researchers to be non-international students that want to ensure that their peers have as many opportunity possibilities as possible after graduation. - - ', '495', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('04eb0410-6ab0-4795-be9c-163606fc8e25', 'InterVarsity Multiethnic Christian Fellowship', 'Our vision is to foster a community that gives every corner of Northeastern an opportunity to explore Jesus, be transformed, and change the world! We want to see all –cynics, seekers, followers, leaders– welcomed, loved, challenged, and changed together', 'Hey there! Wondering how to get connected? Come on over to NUIV! We’re a community that loves to open up conversations about life and Jesus. There are always difficult, yet totally fair questions about the Christian faith and the world that surrounds us... and that’s where the fun begins! We always try to create inclusive spaces for real conversations and build genuine relationships that reflect the love of Jesus. From fun and lighthearted games to deeper, candid conversations, we hope to experience the full depths of life and live out the reality of a loving God. - -We are a dynamic group of students who want to: - -1. Be a diverse community growing together in love, faith, and knowledge of Jesus Christ. - -2. See the power of Christ transform the lives of students at Northeastern holistically, spiritually, emotionally, intellectually. - -3. Promote dialogue and be a safe and open place for all wanting to grow deeper in the knowledge and understanding of Jesus Christ and his teachings, regardless of one''s spiritual background. - -4. Promote the biblical basis for ethnic and racial reconciliation. - -5. Engage in issues surrounding poverty through local and global outreach and service opportunities. - - - -Join our Slack: https://join.slack.com/t/nuintervarsity/signup', '1012', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('91c13e24-d069-45d8-8780-420224dc2b44', 'IoT Connect of Northeastern University', 'Run by students in Computer Systems Engineering (concentration in the Internet of Things), NU IoT connect is a common platform for all things IoT, at Northeastern. Through this student organization, we hope to foster a community for students, faculty, ...', 'Run by students in Cyber Physical Systems (concentration in the Internet of Things), NU IoT connect is a common platform for all things IoT, at Northeastern. Through this student organization, we hope to foster a community for students, faculty, alumni, and industrial establishments that are enthusiastic about the endless opportunities this field has to offer. To do this, we regularly conduct workshops, work on real-world projects, and organize meet-ups with companies that are into IoT. It’s an amazing opportunity to stay informed about the latest trends in the field and find a potential career prospect. Attend any of our biweekly meetings to become a member and stay connected. Whether you are a newbie or a professional, all enthusiasts are welcome to join. Let’s strive to maintain a human connection in this increasingly connected world of smart devices.', '290', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('acdf7039-28fc-478d-85ad-bb02cf504817', 'Iranian Student Association of Northeastern University', 'The Iranian Student Association of Northeastern University (ISAN), which was founded by NEU students in 2007, creates a sense of community among students and faculty interested in Iranian culture by means of music, language, food, ideals, and traditions.', 'Iranian Student Association of Northeastern University (ISAN) is a cultural organization founded by the students of NEU in 2007. The purpose of this group is to foster a sense of community amongst Persian students and faculty, as well as any members of the university community who exhibit interest in our culture. Our music, language, food, ideals, and traditions bring us together and create a bond that is strengthened through the community, and we hope you will join us and share in our cultural heritage!', '811', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('36d7b641-5f85-48ad-87d2-8c464dde5151', 'Irish Dance Club of Northeastern University', 'Irish Dance Club of Northeastern University is an organization for Irish dancers of all levels to come together to dance, choreograph, workshop, perform, and develop their skills. ', 'Northeastern University Irish Dance Club (NUIDC) is an organization for Irish dancers of all levels to come together to dance, choreograph, workshop, perform, and develop their skills. We hold practices every week for beginners and championship dancers. We also attend the Villanova Intercollegiate Irish Dance Festival each year in November with our competition team, and perform at various events around St. Patrick''s Day. This year, NUIDC will be competing at the first annual National Collegiate Irish Dance Championships at Iona College in April.', '831', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('bab7c81b-7564-4b01-a9a3-2e68f78c4e02', 'Islamic Society of Northeastern University', 'ISNU is an organization that strives to build bonds with Muslim-identifying students across campus through weekly programming and university-wide events. Though we aim focus towards Muslim students, our doors are open to all backgrounds.', 'ISNU is an organization that strives to build bonds with Muslim-identifying students across campus through weekly programming and various university-wide events. Our most popular event is our annual Fall Dinner commemorating and celebrating Eid Al-Adha and Eid Ul-Fitr. Here, students and community members dress in their best gowns and come together to enjoy a catered dinner, along with performance(s). Our regular weekly programming usually takes place on Monday evenings, including snacks and/or dinner. On these occasions, we offer community building exercises, religious programming, and thought-provoking discussions. - -ISNU actively provides essential Islamic services and resources fostering spiritual development, planning social functions, investing time and energy in community service, participating in interfaith dialogue and partnerships, and creating a forum for healthy intellectual discourse. - -Though we are focused on Muslim students, our doors are open to all backgrounds. - - - -Please fill out this google form to be added to our email list; we do not use engage much, if at all, so getting on our email list is the best way to be in the loop with all ISNU events and offerings! Thanks! - -https://docs.google.com/forms/d/e/1FAIpQLSdtL1txYVS1Ez1fwR2vETiSOJpF46peKj4idTAh4eCXERqcTw/viewform?usp=sf_link', '152', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('09af5ded-dbb8-4581-a283-ac51dbdd67a7', 'Japanese Culture Club', 'The Japanese Culture Club (JCC) holds meetings every other Friday in Curry Student Center 342 at 6:00 PM. We have casual meetings that cycle between cooking sessions, movie nights, game nights, and general meetings about Japanese culture and language.', 'The Japanese Culture Club (JCC) holds meetings every other Friday in Curry Student Center 342 at 6:00 PM. We have casual meetings that cycle between cooking sessions, movie nights, game nights, and general meetings about Japanese culture and language. In the spring, we host a Harumatsuri (Spring Festival) featuring Japanese food and performances. If Northeastern ever decides to give us a looot of funding we will bring you on an aesthetic trip like this: - -https://www.youtube.com/watch?v=gqYzEv_AqYM - -Please see attached video for more important information: - -https://www.youtube.com/watch?v=miomuSGoPzI - -You can join our mailing list by going to our website: - -https://neujcc.com/ - -And join our community by joining our discord: - -https://discord.gg/pGJzq257dd - -We also have an Instagram: - -https://www.instagram.com/neujcc/ ', '189', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('f14c4d19-ae57-41a3-8529-90a4cb3d4485', 'Japanese National Honor Society', 'The Japanese National Honor Society recognizes and encourages achievement and excellence in the study of the Japanese language.', 'Welcome to the Japanese National Honor Society! Our club is dedicated to honoring and promoting excellence in the study of the Japanese language. Whether you''re just starting to explore Japanese or you''re a seasoned learner, our welcoming community celebrates achievement and learning. Join us for cultural events, language practice, and opportunities to connect with fellow enthusiasts. Together, we strive to foster a love for Japanese language and culture while recognizing the hard work and dedication of our members.', '401', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('418a1f09-32a5-4671-be7b-b4df8debf47a', 'Japanese Student Association', 'We are welcoming all Japanese students and students who are interested in Japan, Japanese culture, or Japanese language to come our events! You can get notified about our events by our Instagram page. (https://www.instagram.com/neujsa/', 'Welcome to JSA!✨ We invite all Japanese students and those who are interested in Japan, Japanese culture, or Japanese language to our events! Stay in touch with us by following our Instagram @neujsa or Join Our Newsletter 📑 ようこそ〜🌸 - -For inquiries, please email jsahusky@gmail.com. We look forward to hearing from you!', '960', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('06bd0a64-02d4-4bde-9838-0423566f1399', 'Jewish Student Union', 'Northeastern Jewish Student Union is the independent voice of Jewish students on campus. Northeastern JSU empowers Jewish students to make a difference in their community and the world. JSU student leaders are dedicated to creating a pluralistic, welco...', 'Northeastern Jewish Student Union is the independent voice of Jewish students on campus. Northeastern JSU empowers Jewish students to make a difference in their community and the world. JSU student leaders are dedicated to creating a pluralistic, welcoming and inclusive environment for Jewish college students, where they are encouraged to grow intellectually, spiritually, and socially.', '979', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('e1911d6a-2107-4784-9c04-ead572fd90ea', 'John D. O''Bryant African-American Institute (Campus Resource)', 'To become a national model for African-American and African-Diaspora cultural and research centers that effectively provides service, programs, and engages the community and builds toward becoming self-supporting through research, development and alumn...', 'To become a national model for African-American and African-Diaspora cultural and research centers that effectively provides service, programs, and engages the community and builds toward becoming self-supporting through research, development and alumni participation.', '908', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b8fe43d1-1869-4637-b020-b784f42ca405', 'Journalism Graduate Caucus of Northeastern University', 'The purpose of the Graduate Caucus is to provide all current graduate students attending the School of Journalism and Media Innovation at Northeastern University a community and space for social and academic achievement. ', ' - - - - - -The purpose of the Graduate Caucus is to provide all current graduate students attending the School of Journalism and Media Innovation at Northeastern University a community and space for social and academic achievement. In doing so, the Graduate Caucus provides a means for students to meet and interact, and to provide a forum for discussion and appreciation of our general interest. - - - - - -', '820', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('3bffe299-9656-4e6f-a40d-7894b3f21e78', 'Kaliente Dance Group', 'Kaliente is the Latin dance team of Northeastern University that was founded in 2009. The group is comprised of various students of diverse backgrounds, but that are all connected by one single commonality: the love for dance and Latin culture. ', 'Kaliente is Northeastern''s original Latin dance team. Founded in 2009, we are students from diverse backgrounds, connected by one single commonality: the love for dance and Latin culture. We work to promote Latin American heritage through our dance performances, which include salsa linear, merengue, and bachata, and our community service . Our goal is to share our team''s passion with the Northeastern and greater Boston communities, and to encourage others to incorporate some Latin flavor into their lives.', '10', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('ef484a82-089f-487d-aec3-fb1e01f1f5b0', 'Kappa Alpha Psi Fraternity, Incorporated', 'Kappa Alpha Psi Fraternity, Inc. was founded on January 5th 1911 at - -Indiana University, Bloomington. ', 'Kappa Alpha Psi Fraternity, Incorporated, a college Fraternity, now comprised of functioning Undergraduate and Alumni Chapters on major campuses and in cities throughout the country, is the crystallization of a dream. It is the beautiful realization of a vision shared commonly by the 10 Revered Founders at Indiana University at Bloomington, Indiana on January 5th, 1911 by ten revered men. It was the vision of these astute men that enabled them in the school year 1910 - 11, more specifically the night of January 5, 1911, on the campus of Indiana University at Bloomington, Indiana, to sow the seed of a fraternal tree whose fruit is available to, and now enjoyed by, college men everywhere, regardless of their color, religion or national origin. It is a fact of which KAPPA ALPHA PSI is justly proud that the Constitution has never contained any clause which either excluded or suggested the exclusion of a man from membership merely because of his color, creed, or national origin. The Constitution of KAPPA ALPHA PSI is predicated upon and dedicated to the principles of achievement through a truly democratic Fraternity.', '428', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6cf1f413-f32d-409a-8f41-204625f4c1fb', 'Kappa Delta Sorority', 'Eta Kappa chapter of Kappa Delta Sorority at Northeastern University, Boston, MA. We pride ourselves on being confident, independent, and strong women who are constantly striving for that which is honorable, beautiful, and highest.Kappa Delta Sorority..', 'We are the Eta Kappa chapter of Kappa Delta Sorority at Northeastern University! We pride ourselves on being confident, independent, and strong women who are constantly striving for that which is honorable, beautiful, and highest. Kappa Delta Sorority is dedicated to four national philanthropies: Girl Scouts of the USA, Prevent Child Abuse America, Children''s Hospital of Richmond, Virginia and the Orthopedic Research Awards If you want to learn more: Facebook: https://www.facebook.com/kappadeltaneu Twitter: @KappaDeltaNU Instagram: @KappaDeltaNU Website: www.neukappadelta.com Or email our President, Jada, at nukdpresident@gmail.com! - - ', '535', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('1b32e0d8-bb7e-4494-89a6-ae0cf53fe346', 'Kappa Kappa Gamma - Eta Omicron Chapter', 'Kappa Kappa Gamma is an organization of women which seeks for every member, throughout her life, bonds of friendship, mutual support, opportunities for self-growth, respect for intellectual development, and sisterhood.', 'Kappa Kappa Gamma is an organization of women which seeks for every member throughout her life bonds of friendship, mutual support, opportunities for self-growth, respect for intellectual development, and an understanding of and an allegiance to positive ethical principles.', '142', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('3aa95840-5bd8-4545-aa03-1ed54da61a8e', 'Kappa Phi Lambda', 'Sisterhood, Service, Cultural Diversity.Kappa Phi Lambda is an Asian-interest, not Asian-exclusive sorority. Xi Chapter of Kappa Phi Lambda was established on June 15, 2002 and is located in the heart of Boston.', 'Sisterhood, Service, Cultural Diversity. Kappa Phi Lambda is an Asian-interest, not Asian-exclusive sorority. Xi Chapter of Kappa Phi Lambda was established on June 15, 2002 and is located in the heart of Boston.', '643', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('bbea8456-45b5-41fe-af35-2c0c8aa405eb', 'Kappa Psi Pharmaceutical Fraternity, Inc.', 'Kappa Psi Pharmaceutical Fraternity is the oldest and largest professional pharmaceutical fraternity in the world. There are over 155 chapters and 87,000 graduate member across the United States. ', 'Kappa Psi Pharmaceutical Fraternity is the oldest and largest professional pharmaceutical fraternity in the world. There are over 155 chapters and 87,000 graduate member across the United States. Kappa Psi values high ideals, sobriety, industry, and fellowship. We aim to support and participate in all projects that advance the profession of pharmacy. The Gamma Lambda chapter was reactivated in the summer of 2013 after being dormant for over 30 years. We plan to help advance the profession of pharmacy at Northeastern and the surrounding communities through professional events, community service, and philanthropy.', '85', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('63da9b45-373a-446e-a095-b72849b28553', 'Kappa Sigma', 'About Kappa Sigma Xi-Beta:The Xi-Beta Chapter of the Kappa Sigma Fraternity was founded at Northeastern University in 1992 and with over 120 active men, is the largest chapter in the university''s fraternity system. Xi-Beta prides itself in its active ...', 'About Kappa Sigma Xi-Beta: The Xi-Beta Chapter of the Kappa Sigma Fraternity was founded at Northeastern University in 1992 and with over 120 active men, is the largest chapter in the university''s fraternity system. Xi-Beta prides itself in its active social life with Fraternities and Sororities on Campus, commitment to academic excellence, dedication to Community Service and Philanthropic events, and its unmatched strength in Brotherhood and Fellowship. Xi-Beta has Brothers involved in all aspects of Northeastern University, ranging from participation in Intramurals to leadership roles in Student Government, IDEA, Finance and Investment Club, TBP, and a Mishelanu Chapter. Xi-Beta has been the recipient of multiple Northeastern University Chapter of the Year Awards since its inception and the National Kappa Sigma Founder''s Circle award for chapter excellence, the highest honor throughout Kappa Sigma. About Kappa Sigma: Founded in 1869 at the University of Virginia, the Kappa Sigma Fraternity is currently one of the largest men''s college organizations in North America, having initiated more than 230,000 members. With more than 250 undergraduate and alumni chapters throughout the U.S. and Canada, the Fraternity teaches its core standards and values through educational programming related to the four cornerstones of Fellowship, Leadership, Scholarship, and Service', '951', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6fafab70-19a6-411c-9a37-cdd8ba4696f1', 'Khoury Graduate Student Association', 'The KGSA''s mission is to support and maintain a community among graduate students in the Khoury College of Computer Sciences. We serve as both a social space and as a democratic body that advocates for the interests of Khoury graduate students.', 'The Khoury Graduate Student Association (KGSA)’s mission is to support and maintain a community among graduate students in the Khoury College of Computer Sciences at Northeastern University. We aim to collaboratively create a more welcoming and supportive environment for all graduate students. Just like other GSA organizations in other departments, we serve as both a social space and as a democratic body that will advocate for the interests of Khoury graduate students with the college administration. - -To learn more about the Khoury GSA, check out this presentation of our agenda as of Summer 2021. There is also a short description of our activities.', '963', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('07e301ff-6110-4fee-bb2d-41d37fa61486', 'Khoury Masters Student Council', 'The Northeastern University Khoury Masters Student Council serves as an official liaison between Khoury masters students and the administration.', 'The Northeastern University Khoury''s Masters Student Council serves as an official liaison between Khoury masters students and the administration. We strive to promote student interests within Khoury, to enrich academics, student life, and overall success in the masters program.', '218', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('2aa0afbf-d52b-4284-ab74-3aaf04c59d11', 'Kids in Nutrition', 'Kids in Nutrition (KIN) aims to empower youth to lead healthy lives through nutrition education. To achieve this goal, we connect college students with local elementary students and engage the kids in fun, interactive activities about healthy eating. ', 'Kids in Nutrition (KIN) aims to empower youth to lead healthy lives through nutrition education. To achieve this goal, we connect college students with local elementary students and engage the kids in fun, interactive activities about healthy eating. We believe in the power of encouraging kids to think about how their individual dietary choices impact both themselves and the world around them. ', '490', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('91298d67-b518-46d3-af6d-eba7e6eac29a', 'Kinematix Dance Troupe', 'Founded in 2006, Kinematix is a Northeastern University dance troupe. The team recognizes dance as a powerful, evolving culture and provides a channel for students to grow in that richness.', 'Founded in 2006, Kinematix is a Northeastern University dance troupe. The team recognizes dance as a powerful, evolving culture and provides a channel for students to grow in that richness. Kinematix strives to deepen the talents of its members, promote social collaboration within Northeastern and the Boston community, and create a supportive and nurturing environment. Through performances and choreography Kinematix aspires to extend its horizons and to inspire others through music and “bodies in motion."', '266', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('de695076-5285-4564-8647-64a51615cef3', 'Korea Campus Crusade for Christ', 'Korea Campus Crusade for Christ (KCCC) is a non-denominational movement committed to helping fulfill the Great Commission in our generation (Matthew 28:18-20) by winning, building, and sending in the power of the Holy Spirit! ', 'Korea Campus Crusade for Christ (KCCC), is a non-denominational movement committed to helping fulfill the Great Commission in our generation (Matt. 28:18-20) by winning, building and sending in the power of the Holy Spirit! - - - -It is our desire that we would be used by God to help reach students and faculty of Northeastern University with the Gospel so that every person on campus will know someone who truly follows Jesus Christ. - - - -Weekly Meetings - - - -Large Group: Wednesdays @ 7:30-9:30 PM @ Robinson 109 - - - -Small Group: If you are interested in joining a small group, please contact any of the leaders below (contact info below). There are various ones that meet throughout the week. - - - -Morning Prayer: Tuesday - Thursday 7 AM - - - -If you are interested in our organization, please fill out this form so we know how to best contact you!', '474', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('42c287d3-d5ec-4cda-be72-2163c028677b', 'Korean American Student Association', 'The Northeastern University Korean American Student Association is an organization that serves to promote cultural awareness at Northeastern University and the surrounding Boston area. We strive to bring together students of both Korean and non-Korean ...', 'The Northeastern University Korean American Student Association is an organization that serves to promote cultural awareness at Northeastern University and the surrounding Boston area. We strive to bring together students of both Korean and non-Korean backgrounds to establish a sense of community within the university. By creating and strengthening bonds, NEU KASA serves to unite students by showcasing Korea''s rich heritage and the immense potential and talent that we possess. Open to all students of all backgrounds, race, ethnicity, color and religion, NEU KASA serves to enrich, educate, and exemplify the Korean culture. - -Please like our Facebook page @NEU Korean American Student Association and Instagram @neukasa for further updates!', '874', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('351ba11c-93f5-488a-9e68-1525822ebb84', 'Korean International Student Association', 'KISA strives for general well-being of Korean international students and provide better career opportunities and alumni connection. As a nature of the organization, KISA takes responsibility in representing Korea and Korean organizations to the public.', 'KISA strives for general well-being of Korean international students and provide better career opportunities and alumni connection through a variety of events including new student orientation, movie nights, and seasonal events. KISA provides a community in which students can support each other at times of trouble and act as a family during special days such as Korean traditional holidays. As a nature of the organization, KISA takes serious responsibility in representing Korea and Korean organizations to the public. ', '869', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('20824280-fdfe-4d43-935c-0a935f83623b', 'Korean Investment Society at D’Amore-McKim School of Business', 'Korean Investment Society at D’Amore-McKim School of Business (McKIS), is committed to producing its members turn great ideas into scalable and sustainable business models through various types of business-related experiential projects. ', 'Korean Investment Society at D’Amore-McKim School of Business (McKIS), is committed to producing its members turn great ideas into scalable and sustainable business models. - -We have achieved numerous successes through various types of experiential projects every semester, ranging from marketing strategy competition, stock investment competition, to business plan development, collaborative projects with innovative start-ups and non-governmental organizations. Being part of the McKIS network is the most significant investment that our members will inherit with our successful alumni in various industries. We provide a platform that enables students, future leading business professionals, to meet not only with each other but also with leading business professionals in various sectors in Korea. - -For our new vision plan for 2023, McKIS aims to expand the vision of synergism between thriving Korean economies and the future of businesses. To be more specific, McKIS is willing to provide opportunities to apply their academic knowledge to actions, based on rigorous analysis, responsible leadership, and realistic projects, primarily focusing on South Korea’s entrepreneurial market. McKIS will continue to educate, contribute, and foster to make members get a step closer to being successful future of businesses, and expand that vision for all students in Northeastern University who are seeking interest in Korean enterprises.', '639', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('c39b9851-001c-48af-a23b-ad372c5f0a07', 'Korean-American Scientists and Engineers Association', 'Korean-American Scientists and Engineers Association at Northeastern University. We are a non-profit professional organization that promotes the application of science and technology for the general welfare of society, fosters international cooperation...', 'Korean-American Scientists and Engineers Association at Northeastern University. We are a non-profit professional organization that promotes the application of science and technology for the general welfare of society, fosters international cooperation especially between the U.S. and Korea, and helps Korean-American Scientists and Engineers develop their full career potential.', '999', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6095149b-b59f-4f00-8642-9f3b79abf6cc', 'Lambda Kappa Sigma', 'Lambda Kappa Sigma, a professional pharmacy fraternity, strives to lead with integrity, inspire excellence, and professional excellence amongst our members to "provide lifelong opportunities for women in pharmacy. ', 'Lambda Kappa Sigma, one of three co-ed pharmacy fraternities at Northeastern, strives to provide lifelong opportunities for women in pharmacy through professional excellence and personal growth. Founded in 1913 by Ethel J. Heath at the Massachusetts College of Pharmacy, we now have 49 collegiate and 38 alumni chapters and have initiated more than 24,000 members. - - - -We strive to lead with integrity, where we stay true to our values and encourage and empower our members. We inspire excellence and instill passion, confidence, and professional excellence within our members. We also impact our communities by demonstrating compassion and advocating for women''s health issues. - - - - ', '507', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('301554cd-99ea-48ff-a037-5b2f77f59e3a', 'Lambda Phi Epsilon, Inc.', 'Lambda Phi Epsilon was founded on February 25, 1981 by a group of nineteen dedicated men led by principal founder Mr. Craig Ishigo. Hoping to transcend the traditional boundaries of national origins, the founders aimed to create an organization that wo..', 'Lambda Phi Epsilon was founded on February 25, 1981 by a group of nineteen dedicated men led by principal founder Mr. Craig Ishigo. Hoping to transcend the traditional boundaries of national origins, the founders aimed to create an organization that would set new standards of excellence within the Asian American community, develop leaders within each of the member’s respective community, and bridge the gaps between those communities. While the initial charter was comprised of Asian Pacific Americans, the brotherhood was open to all who were interested in supporting these goals. Mr. Craig Ishigo and Mr. Darryl L. Mu signed the charter as President and Vice President, respectively. Lambda Phi Epsilon’s vision is to become the preeminent international Asian interest fraternal organization, providing outstanding leadership, philanthropy, and advocacy in the community. The mission of the organization is to promote Lambda Phi Epsilon and its brothers by: - Developing active members to become leaders through training and hands-on experience, to advance personal growth, and to achieve academic excellence. - Perpetuating leadership of our alumni members in the community, creating opportunities, and encouraging the spirit of fellowship. - Promoting positive Asian American awareness and providing the highest level of philanthropy in the community.', '559', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('65d9d5ce-e0d2-4295-82a4-25fb6aa85210', 'Latin American Law Student Association', 'The Purpose of the Association is to articulate and to promote the needs and goals of Latin@ Law Students and all its members through support, advocacy, and professional development', 'Northeastern LALSA''s mission is to provide a safe space to bring, build, and share Latinx culture and experiences to NUSL and beyond.', '898', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('76a8df2c-b7a3-44fc-a5b1-592966620239', 'Latin American Student Organization', 'Mission Statement: "Dedicated to the Advancement of Our Culture and the Preservation of Our Identity."Since its inception, LASO''s goals have been to promote a positive image of Latin American culture, to inspire, develop, and promote leadership within...', 'Mission Statement: "Dedicated to the Advancement of Our Culture and the Preservation of Our Identity." Since its inception, LASO''s goals have been to promote a positive image of Latin American culture, to inspire, develop, and promote leadership within the membership, to improve the college experience for Northeastern University''s Latin American students and the overall student body, and to contribute to the progress of the Latin American population beyond Northeastern University through various outreach programs.', '828', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('e356fa30-cfca-4696-b3ac-290e6ab461ab', 'Latinas Promoviendo Comunidad / Lambda Pi Chi Sorority, Inc.', 'Latinas Promoviendo Comunidad / Lambda Pi Chi Sorority, Inc. (LPC) is a nationally recognized sorority under the National Association of Latino Fraternal Organizations.', 'Latinas Promoviendo Comunidad / Lambda Pi Chi Sorority, Inc. (LPC) is a nationally recognized sorority under the National Association of Latino Fraternal Organizations. Our vision is to create a lifetime network of Hermanas dedicated to empowering themselves and their communities. Our mission is to empower women by providing a supportive network dedicated to their personal and professional advancement. Our Hermandad is further advanced by our shared dedication and promotion of public service and cultural awareness, with an emphasis on Latino history, contributions, and experiences. Our ideals as an organization are La Comunidad (the community), La Cultura Latina (the latin culture), and La Hermandad (the sisterhood). - -Nu Chapter has had its charter since 1999, founded on the campus of Harvard University. Nu Chapter is currently a city-wide chapter, with Hermanas at Northeastern University, Tufts University, Bentley University and UMASS Lowell. While we are a Latina-based sorority, we are not a Latina-exclusive sorority. Therefore the events and goals we set always keep the Latin community and culture in mind, but the women who set to accomplish those goals do not always identify as Latina. These events range from socials where people can gather over Latin food or a fun activity while engaging with one another to professional development workshops where attendees leave with tangible results. We also host philanthropic events based on, but not exclusive to, the philanthropic pursuits of our national organization, which are Project L.E.A.A.P., which works on increasing HIV/AIDS awareness and education or Proyecto H.A.C.E.R., where we help younger generations fulfill their higher education goals.', '871', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5d5f7ac0-e299-4515-aaf4-12734d70f8a5', 'Latinx Student Cultural Center (Campus Resource)', 'The Latinx Student Cultural Center (LSCC) engages Northeastern''s global Network in academic, personal and professional development by providing an inclusive space for self-care, Latinx education and celebration, and experiential opportunities', 'The Latinx Student Cultural Center (LSCC) engages, supports and empowers Northeastern''s global Network in academic, personal and professional development by providing an inclusive space - a home away from home - for self-care, Latinx education and celebration, and experiential opportunities', '745', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('33858a2c-3622-4012-b5fc-b6ea33c2d3ba', 'LEAD360 (Campus Resource)', 'LEAD360 is a collection of FREE leadership programs designed to teach students the vital skills they need to become more socially responsible and well-rounded leaders on campus and beyond.', 'LEAD360 is a collection of FREE leadership programs designed to teach students the vital skills they need to become more socially responsible and well-rounded leaders on campus and beyond. Building upon the values of interdependence, accessibility, justice, and experiential learning, LEAD360 will help you learn more about yourself, evaluate the ways you collaborate and interact with others, and identify the causes and topics that you are most passionate about.', '873', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('21600875-b129-4878-bed0-84f111c863a0', 'Lean Endeavors at Northeastern Club', 'Our mission is to provide students with resources that help them improve their knowledge and exposure to LEAN concepts and get to delve deeper into the industrial practices. We believe lean is a philosophy, a way of thinking and that can be applied in ...', 'Our mission is to provide students with resources that help them improve their knowledge and exposure to LEAN concepts and get to delve deeper into the industrial practices. We believe lean is a philosophy, a way of thinking and that can be applied in a wide variety of domains. We as a lean club will be undertaking activities and projects that will help improve current standards as well as increase efficiency of a process at Northeastern or any other industrial problem. Lean is a versatile concept in itself that can be applied to various functional areas within an organization like operations, sales and supply chain, manufacturing and project management departments, etc. We at lean club will assist students to apply these concepts, use them as a tool to improve themselves as well as organization they are associated with. Lean helps in reducing waste and increasing efficiency be it time, processes or cost and we help students develop that mindset and have a leaner approach to problem solving guiding companies and non-profit organizations to grow sustainably. We aim to provide resources and oppotunities for students to participate in lectures, workshops by experienced professionals in lean operations, envisioning to create an opportunity for students to work on projects with them. We would like to make learning about lean to be a fun activity for example working in a team consisting of students from various streams and competing in process improvement, case presentations, training simulation games. Proactive involvement in such tasks will provide an experience and enhance their soft skills along with clearing fundamental concepts. We also believe that Lean is not just a concept, it is a way of life. Like Peter Drucker concisely said, "There is nothing as useless as doing efficiently, that which should not be done at all" further pointing out adaptability and dynamically improving each and everyday. Join our team to encounter new challenges and gain an enriching experience.', '398', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5f6b1961-350f-4c05-aa79-29139c8d1b30', 'Lean On Me', 'Lean On Me is a student-run text support hotline that anonymously connects students with our Peer Supporters to create conversations. Our mission is to be a listening ear for Northeastern students.', 'Lean On Me is a text support hotline that anonymously connects students with their peers to create conversations where they can be unconditionally supported. - -Lean On Me is composed of Users and Supporters. Our Users are the Northeastern students who utilize the hotline and text in about their problems. Our Supporters are the trained students who operate the hotline and anonymously respond to the Users. Our Supporters are trained in empathetic listening and communication, so that they are prepared for any situation that they may come across. We emphasize that our hotline is not to be used as a substitute for professional help. We are a non-crisis hotline meant for peer-to-peer support. - -Lean On Me envisions a world where everybody has somebody to lean on. - -', '457', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('cfd7545f-6323-4ac1-a7af-0aede709b7b1', 'Legacy Mentoring Program (Campus Resource)', 'The Legacy Mentoring Program is a joint effort of undergraduates, upperclass and graduate students, NU faculty, staff, alumni, professionals and the community at large.We actively promote and support academic excellence, access to professional and educ...', 'The Legacy Mentoring Program is a joint effort of undergraduates, upperclass and graduate students, NU faculty, staff, alumni, professionals and the community at large. We actively promote and support academic excellence, access to professional and educational resources with the goal of increasing the retention and graduation rates of students of color and NU undergraduates. Our academic, social, professional, and cultural mission creates a unique community of personal growth, development,success and academic achievement.', '614', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a3555d95-e1bb-4637-9cf7-1d552e6ef3e2', 'LGBTQA Resource Center (Campus Resource)', 'Welcome to the Northeastern University LGBTQA Resource Center Orgsync page. Here we provide information for the Northeastern Lesbian, Gay, Bisexual, Transgendered, Questioning, and Ally community as well as provide support for those that may have ques...', 'Welcome to the Northeastern University LGBTQA Resource Center Orgsync page. Here we provide information for the Northeastern Lesbian, Gay, Bisexual, Transgendered, Questioning, and Ally community as well as provide support for those that may have questions about the living in this community. The LGBTQA Resource Center is located on the 3rd floor of the Curry Student Center, in room 328. The LGBTQA Resource Center is a place students can come to socialize, relax between classes, study, and learn more about opportunities for students who identify as LGBTQA within the Northeastern Community. There is also a LGBTQA resource library students can use for research or entertainment. Simply put, the LGBTQA Resource Center is the information hub for all that is LGBTQA on the Northeastern Campus. Mission: The LGBTQA Resource Center aspires to create a community that is free from societal issues such as heterosexism and transphobia, by instilling a culture of appreciation, respect and empowerment throughout Northeastern. We initiate and sustain co-curricular programs and services that enrich the holistic development of our lesbian, gay, bisexual, transgender, queer, questioning and ally students. Through dialogue and support services, we strive to increase the visibility of and enhance LGBTQA student life on campus.Sign up here to hear more from our orgs and our newsletter! https://docs.google.com/forms/d/e/1FAIpQLSdkJd-tDklKeTVsFW0bZCvmw0Vp6rGw_GEAblrTv-LxVh73Fg/viewform', '809', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('912fde04-b7ca-4125-961a-96e3a551c87e', 'Live Music Association', 'Live Music Association is a completely student-run group that is your one stop shop for live music on campus. Our club largely consists of non-music industry majors by chance, so it allows students who have an extracurricular interest get hands on expe..', 'Live Music Association is a completely student-run group that is your one-stop shop for live music on campus. - -Our club is not exclusive to music industry majors by design, so it allows students who have an extracurricular interest in live music to get hands-on experience running a show in Northeastern University venues and meet peers that have the same interests. We aim to bring the music community of Northeastern closer together with every meeting and event - such as but not limited to concerts, music festivals, open mic nights, DJ nights, drag shows, music industry panels, music trivia nights, and so much more. - -We aim to promote social justice through a diverse array of artists and a dedicated portion of events that advocate for marginalized communities, fundraise for charities, and push for equity on and off campus. - -Past concerts we have brought to campus in our LMA Presents series include Still Woozy, Duckwrth, Beach Bunny, Sidney Gish, Noname, Poppy, Ashe, Phoebe Bridgers, Louis the Child, Maude Latour, Hippo Campus, UMI, Faye Webster and more. Past drag artists we''ve hosted include Sasha Colby, Kennedy Davenport, Olivia Lux, Neon Calypso, Arabella the Goddess, Kori King, and so many more. - -LMA also hosts open mic nights where Northeastern students can take the stage and perform their own music. We also plan and host other special events including DJ nights, drag shows, music industry panels and more. - -At our general meetings, we discuss the latest in live music and divide into teams (Events and Marketing/Media) to work towards organizing upcoming events. Follow us on Instagram & Tiktok (@livemusicneu) and join our slack to keep up with what we''re up to! For general inquiries, feel free to DM us on instagram or email at livemusicneu@gmail.com.', '897', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('db57f61c-cf27-4dce-9a36-6f577adb6e8d', 'Lutheran-Episcopal Campus Ministry', 'Lutheran-Episcopal Campus Ministry at Northeastern is a Christian ministry to students, faculty, and staff on campus. We worship and pray, talk and reflect, and reach out to our neighbors. Our group includes Lutherans, Episcopalians, and students from ...', 'Lutheran-Episcopal Campus Ministry (aka Open Table) at Northeastern is a Christian ministry to students, faculty, and staff on campus. We worship and pray, talk and reflect, and reach out to our neighbors. Our group includes Lutherans, Episcopalians, and students from many other backgrounds. All are welcome, and we are an open and affirming community! Every Thursday from fall through spring, we gather at 5:45 pm for worship and programs that help us explore questions about faith and life together. Held in Northeastern''s beautiful Spiritual Life Center (201 Ell), these events give us the chance to build relationships with one another and to hear about the many ways in which God is at work in our lives. ', '1023', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5a5829ae-6899-4ca3-b974-405cd8639675', 'Marine Science Center Graduate Student Association', 'The purpose of the MSCGSA is to encourage scientific and social networking among graduate students at the Marine Science Center and to provide support and opportunity during their graduate tenure.', 'The purpose of the MSCGSA is to encourage scientific and social networking among graduate students at the Marine Science Center and to provide support and opportunity during their graduate tenure.', '221', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('0fd953c4-3658-48a5-9e65-a27279faec66', 'Math Club of Northeastern University', 'Math Club offers an environment for Northeastern undergraduate and graduate students of all years, majors, and experience levels an opportunity to meet other interested students and learn, discuss, and do math.', 'Math Club provides a setting for students interested in mathematics to meet other students sharing common interests. We regularly host guest speakers for invited talks on interesting mathematical topics. Otherwise, meetings feature problem-solving, networking, research, and industry opportunities. Food (typically pizza, including vegan and gluten-free pizza) is provided at each meeting. - -Please join our Discord! https://discord.gg/S4xkPJ3Jcd', '135', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('113b7f7a-e7e7-46b9-9f52-ec75c68492db', 'Mathematics Engagement and Mentorship Association', 'Mathematics Engagement and Mentorship Association', 'MathEMA is a student-run mentorship program at Northeastern University that aims to help incoming students feel more welcome and aware of the opportunities available in the math department. We connect experienced upperclassmen with young students to discuss topics like co-op, choosing classes and professors, and acclimating to college life. We also host events like virtual movie nights, coffee chats, and study halls.', '761', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('83985f5f-1dff-4692-90aa-50472fa4b9b1', 'Mathematics Graduate Students Association', 'The MGSA is the official voice and representative of the graduate student body in the Department of Mathematics of Northeastern University.', 'The MGSA is the official voice and representative of the graduate student body in the Department of Mathematics of Northeastern University.', '608', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a9b7483b-c163-483d-8922-1402f65b5889', 'MEDLIFE Northeastern', 'MEDLIFE NEU provides the opportunity for all students interested in global health to participate in in-person Service Learning Trips to partnering communities in South America or East Africa, where they experience extreme health disparities first-hand.', 'MEDLIFE Northeastern provides the opportunity for all students interested in global health to participate in in-person Service Learning Trips every semester to partnering communities in Peru, Ecuador, Tanzania, and Costa Rica, where they are introduced to the health disparities that impoverished communities face every day. On a Service Learning Trip, students work in mobile service clinics with local physicians to provide healthcare and work with local and MEDLIFE engineers to build sustainable development projects for the community. Throughout the semester, MEDLIFE NEU offers pre-health students at Northeastern the opportunity to volunteer both locally and internationally, while holding fundraising events for our partnered communities or informational events such as the Healthcare Professional Panel. Our intended audience is any student interested in humanitarianism and/or medicine (pre-med, pre-nursing, pre-dental, i.e. pre-health). Our club holds volunteer events, healthcare workshops, humanitarianism speaker events, and Power Hour fundraising events. Since its establishment, MEDLIFE NEU has raised over $2800 for communities in Peru and Ecuador, which fed over 1,800 people. MEDLIFE Northeastern is a chapter of the national MEDLIFE organization, which is a 501(c)(3) non-profit organization that partners with low-income communities in Latin America and Africa to improve their access to medicine, education, and community development projects.', '382', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('ccd407cd-65ea-4ea5-8ac9-1930fb9c5645', 'Men''s Club Basketball Team', 'The Northeastern Men’s Club Basketball team is a competitive, student-run organization that is active throughout the year. We are a member of the NCBBA league in which we play schools from across the New England region and in national tournaments.', 'Welcome to the Northeastern Men’s Club Basketball Team, a vibrant and competitive student-run organization dedicated to the love of basketball. Throughout the year, our team shines as a proud member of the NCBBA league, engaging in spirited matches with schools across the New England region and representing our passion for the sport in national tournaments. Join us for an exciting journey filled with teamwork, sportsmanship, and unforgettable basketball moments!', '595', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('aa447f7f-549f-40fe-989a-3619945c1b65', 'Men''s Squash Team', 'We are a competitive squash team that practices 5 times a week and competes against club and varsity programs in the New England area. We travel to nationals every year to vie for the title of the #1 club team in the nation.', 'Welcome to the Men''s Squash Team! We are a close-knit group of passionate squash enthusiasts dedicated to honing our skills and competing at the highest level. Our team practices five times a week, pushing each other to improve and excel both on and off the court. We proudly represent our club in spirited matches against other clubs and varsity programs across the vibrant squash scene in New England. The pinnacle of our season is our annual journey to nationals, where we go head-to-head with the best club teams in the nation, striving to claim the coveted title of the #1 club team. Whether you''re a seasoned player or new to the game, our team fosters a welcoming environment where camaraderie and sportsmanship reign supreme. Join us on this thrilling squash journey and be part of a community passionate about achieving excellence together!', '336', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5da4c77a-febd-43d7-bbc5-270d8a3561a9', 'Mexican Student Association', 'We are a vibrant and dynamic Mexican club organization that celebrates the spirit of Mexico. Join us to experience the colorful traditions and warm camaraderie, whether you''re Mexican or simply passionate about Mexican culture. ', 'Our mission as the Mexican Student Association (MEXSA) is to provide a welcoming and familiar environment for Mexican students at Northeastern University. ', '16', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('9f69b94a-18b9-470c-a6e2-1f8732f6671c', 'Minority Association of Pre-health Students', 'MAPS exists to support current and future underrepresented medical students, address the needs of underserved communities, and increase the number of clinically, culturally, and socially competent healthcare providers. All are welcome to join!', 'The Northeastern University Chapter of the Minority Association of Pre-Health Students (MAPS) exists to support current and future underrepresented pre-medical, pre-PA, pre-dental, etc. students, address the needs of under served communities, and increase the number of clinically excellent, culturally competent and socially conscious healthcare providers. MAPS is a free organization in which all students from all backgrounds are encouraged to join! - -Check out our pamphlet for additional information about MAPS: https://issuu.com/nsahli98/docs/mapspamphletissuu.docx', '886', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6be637bd-180d-44ea-be6e-3fe635af7f4a', 'Mixed Student Union', 'A cultural based student group whose purpose is to foster a sense of identity and community for Northeastern University students who identify as biracial, multiracial, multiethnic, and multicultural. ', 'A cultural-based student group whose purpose is to foster a sense of identity and community for Northeastern University students who identify as biracial, multiracial, multiethnic, and multicultural. Furthermore, our association desires to promote dialogue, advocacy, education, and awareness for the diverse and unique issues relevant to students from multiracial backgrounds on NU''s campus.', '140', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d546d680-e6a3-4f06-aa9b-e6f9e9dbd8c3', 'Multi-diverse Unified Leaders in Technology Industry', 'MULTI aims to promote diversity and inclusion in the technology field, and to uplift and empower students from all backgrounds pursuing a career in the industry.MULTI fosters an inclusive learning community by hosting a variety of events, including gro..', 'MULTI aims to promote diversity and inclusion in the technology field, and to uplift and empower students from all backgrounds pursuing a career in the industry. MULTI fosters an inclusive learning community by hosting a variety of events, including group discussions, career talks, and workshops. MULTI also provides a platform for discussing student affairs and engaging with Khoury’s diversity and inclusion initiatives.', '467', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('ebd75475-11e9-4077-b4cc-9591ef458754', 'Multicultural Greek Council', 'The Multicultural Greek Council is a co-educational governing council serving its fraternity and sorority affiliated members, the University, and local communities as well as our cultural community, campus, and multicultural groups and clubs.', 'The Multicultural Greek Council is a co-educational governing council serving its fraternity and sorority affiliated members, the University, and local communities as well as our cultural community, campus, and multicultural groups and clubs. The purpose of the Multicultural Greek Council (MGC) is to increase awareness of various cultures and ethnicities to the recognized organizations and the community as well as promote a positive image of these organizations through cooperation, communication, and participation. The MGC serves as a body to unite and promote growth among our own organizations as well as to other fraternities and sororities on campus. Below are the current active organizations recognized within MGC: - -Active Member Organizations - - - -Beta Chi Theta Fraternity, Inc. - -Kappa Phi Lambda Sorority, Inc. - -Lambda Phi Epsilon Fraternity, Inc. - -Omega Phi Beta Sorority, Inc. - -Pi Delta Psi Fraternity, Inc. - -Sigma Beta Rho Fraternity, Inc. - -Sigma Psi Zeta Sorority, Inc. - - - -Associate Member Organizations - - - -Lambda Pi Chi Sorority, Inc. - - - - ', '59', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('e410a6d0-4dbd-4969-9a6c-f37c122cebbc', 'Multicultural International Student Association', 'MISA is a community for international students and interested undergraduate students that unites, promotes, and explores cultural diversity and identity. We hold weekly meetings in order to provide cultural celebration and career development. - -', 'We at MISA aim to bring Northeastern students from various cultures and backgrounds together, creating a space for international students to unite, promote and explore diversity and identity. - - - -Did you know that Northeastern University is home to one of the largest international student communities in the United States, with over 20,000 international students coming from over 147 countries? MISA is a community that celebrates these students and their unique international upbringing. Despite this club catering to international students, we find that by welcoming all undergraduate students it will also give students space to understand cultural differences further and close the cultural gap. - - - -Events we plan to host include personal development and small sessions that are often not advertised broadly at Northeastern (eg. how-to sessions for co-op processes, visa status, travel records, social security numbers, etc). These events will invite various Northeastern offices and specialists as special speakers to ensure we are providing the most up-to-date and accurate resources. MISA also plans to host food fairs featuring cuisines from around the world, speaker series featuring global professionals, open forums on relevant cultural issues, and inter-club collaboration to celebrate cultural holidays.', '1015', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('7f22bdd2-df9a-4c9a-82e6-ee4b2d602783', 'Music In Hospitals and Nursing Homes Using Entertainment As Therapy', 'MIHNUET brings uplifting music to patients and residents of hospitals and nursing homes, harnessing the power of music to enrich quality-of-life and connect communities.', 'MIHNUET is a NEU student-led initiative that brings student musicians together to perform uplifting music for residents and patients in nursing homes and hospitals in the local Boston community. Members perform in concerts at local nursing homes and hospitals, bringing comfort and joy to patients through music. Northeastern members of MIHNUET may choose to perform solo or in small groups. These small groups are a great opportunity to make connections with other Northeastern students. Students that are passionate about performing, playing music with others, or giving back to the community are encouraged to perform!', '410', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d6e7de62-50c2-4329-812a-af5203622951', 'Mutual Aid', 'NU Mutual Aid is a student network dedicated to the well-being of all Northeastern students, staff, and community members during the COVID-19 pandemic and beyond. We aim to work with all members of our community to share and provide necessary resources.', 'NU Mutual Aid is a student network dedicated to the well-being of all Northeastern students, staff, and community members during the COVID-19 pandemic and beyond. We aim to work with all members of our community to organize and alleviate difficulties faced during these times. Our past and current projects include weekly mobile food pantries, a community fridge, winter clothing drive, textbook reimbursement, sexual health product distribution, and menstrual hygiene distribution. We are always looking for students dedicated to working on new projects for our community and volunteers to help with existing projects. You can learn more at numutualaid.org and @numutualaid. *Please note that the positions listed on Engage do not reflect an e-board as we do not have formal leadership positions. All members of NU Mutual Aid are equal. *', '342', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('cfce96fc-118b-46db-89f1-5c4d7593a499', 'NakhRAAS', 'NakhRAAS aims to be Northeastern''s premiere competitive garba and raas team. The group''s primary goals are to educate Northeastern students about the traditional dance forms of garba and raas and compete in the national competitive raas circuit.', 'NakhRAAS aims to be Northeastern''s premiere competitive garba and raas team. The group''s primary goals are to educate Northeastern students about the traditional dance forms of garba and raas, compete in the nationally competitive raas circuit, and to just simply get together and have fun!', '586', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('cedf33a6-46bc-402b-b498-988c71fb5fd4', 'National Community Pharmacists Association', 'The National Community Pharmacists Association (NCPA) is an organization focused on the growth and prosperity of independent pharmacists across the United States. NCPA has student chapters at many schools of pharmacy. ', 'The National Community Pharmacists Association (NCPA) is an organization focused on the growth and prosperity of independent pharmacists across the United States. NCPA has student chapters at many schools of pharmacy. NCPA should pique your interest if you have worked in an independent pharmacy, aspire to work in an independent pharmacy, or perhaps are pursuing a business minor. NCPA Student Affairs offers pharmacy students a wide array of opportunities to broaden and enrich their educational experience, gain valuable real world skills, earn scholarships, and have fun in the process. Our mission is to encourage, foster, and recognize an interest in community pharmacy ownership and entrepreneurship among the future leaders of their profession. Becoming a member of the NU chapter of NCPA will allow you to participate in the Business Plan Competition and provide you access to resources to further your career in pharmacy. NCPA Student Affairs provides great resources for students to hold Prescription Disposal Programs, plan a Health Fair, and many other activities to benefit the public. NCPA membership is open to all pharmacy students (years 1-6) and for non-pharmacy students interested in participating in the Business Plan Competition.', '679', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('dc4bec06-5410-4827-9603-801ed6e5efb6', 'National Marrow Donor Program', 'NMDP is a nonprofit organization dedicated to saving through blood stem cell transplants. The organization matches blood disease patients to potential donors, and the chapter on campus strives to expand the donor registry by hosting swabbing events. - -', 'NMDP (formerly Be The Match) is a nonprofit organization dedicated to saving lives through blood stem cell transplants. The organization’s mission is to advocate for patients with blood cancers by matching them to potential donors. The chapter on campus strives to expand and diversify the donor registry by hosting swabbing events both on and off campus. In the 2022-23 school year, the chapter added 957 swabs to the registry. Our commitment to fighting for better outcomes and more lives saved continues. ', '234', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('7e496706-f397-4c65-a156-c7c9edf5cb15', 'National Organization of Minority Architecture Students', 'NOMAS is dedicated to providing healing and supportive spaces for architecture students of various minority groups to express their creativity and identities. We serve as advocates for various social identity groups within the School of Architecture.', 'The Northeastern University Chapter of the National Organization of Minority Architecture Students (NOMAS) was initiated in order to create a community of students who support the advances of minority students in architecture and embrace differences of all kinds within the field. Additionally, this chapter was established to help provide these students with opportunities to get involved with the architecture community, especially with other minority architects. The organization will hold numerous activities for students and will also work towards sending students to other events both in and out of the Boston area. This organization also provides students with an opportunity to become informed and act on social justice issues, as well as to give back with community service projects.', '184', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('437f119f-49ab-4fb7-8661-318ba88e8a33', 'National Pan-Hellenic Council - Northeastern University Chapter', 'Northeastern University''s National Pan-Hellenic Council comprises of the historically African-American fraternities and sororities in the Boston area. ', 'Northeastern University''s National Pan-Hellenic Council is currently comprised of the following Divine 9 organizations: Alpha Phi Alpha Fraternity, Incorporated, Alpha Kappa Alpha Sorority, Incorporated, Kappa Alpha Psi Fraternity, Incorporated, Omega Psi Phi Fraternity, Incorporated, Delta Sigma Theta Sorority, Incorporated, Phi Beta Sigma Fraternity, Incorporated, Zeta Phi Beta Sorority, Incorporated, Sigma Gamma Rho Sorority*, Incorporated, Iota Phi Theta Fraternity, Incorporated* *Denotes inactive, unrecognized D9 organizations on campus. - -The mission statement of the National Pan-Hellenic Council is "unanimity of thought and action as far as possible in the conduct of Greek letter collegiate fraternities and sororities, and to consider problems of mutual interest to its member organizations."', '141', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('e7ef4e42-b347-4244-8add-2d124d74e76d', 'National Society of Leadership and Success', 'As the largest collegiate leadership honor society in the United States, there are 700+ NSLS chapters nationwide and nearly 2 million inducted members. We build leaders, support students in achieving their goals, and improve the world in the process.', 'Welcome to the National Society of Leadership and Success, the largest collegiate leadership honor society in the United States! With over 700 NSLS chapters across the nation and nearly 2 million inducted members, we are a vibrant community dedicated to building leaders and supporting students in achieving their goals. By providing valuable resources, mentorship, and opportunities for growth, we empower our members to make a positive impact on their campus and in the world. Join us on this exciting journey of personal development and making a difference!', '630', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('11580607-285f-448f-895d-85eee2eeda17', 'Net Impact of Northeastern University', 'Net Impact is teaching students how to act now and become the leaders of the social and environmental revolutions of the 21st century.', 'From sustainable fashion and food systems to environmental justice and green policy, Net Impact is an interdisciplinary community eager to put the planet and social justice at the center of every discussion. Comprised of a variety of backgrounds and majors, our members come together at engaging weekly meetings, fun social activities, professional networking opportunities and community service events in a shared effort to put sustainability at the forefront of the community''s consciousness. - -Follow us on Instagram to stay up to date with Net Impact Northeastern: - -https://www.instagram.com/netimpactnu/ - - ', '357', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('7507875b-e92f-456f-a71d-e9424ed86675', 'Network Science Institute Graduate Student Association', 'We are the Graduate Student Association for students in or affiliated with the Network Science Institute. ', 'We are the Graduate Student Association for students in or affiliated with the Network Science Institute.', '1021', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a7145bf5-5609-41af-84ef-1a88d0987326', 'NEU Chinese Language Table', 'NEU Chinese Language Table allows students studying or familiar with Mandarin to socialize through the language. Our events offer a casual learning environment and various activities to engage with Chinese culture.', 'NEU Chinese Language Table is a place for students learning or familiar with Mandarin to socialize through the language. Our events offer a casual learning environment and various activities to engage with Chinese culture. Our weekly meetings alternate between conversational table meetings and basics meetings, through which beginners can learn from and practice Chinese with native and advanced speakers. Our Mentorship program connects beginner and intermediate Mandarin speakers with advanced or Native speakers. We organize outings and on-campus events to supplement our weekly meetings and encourage everyone to use Mandarin in real-world settings. Students studying formally in classes, heritage speakers, native/fluent speakers, those self-studying the language, and anyone interested in learning more about Mandarin and Chinese culture are all invited to attend! - -Connect with us to stay updated on upcoming meetings/events here: https://linktr.ee/neuclt', '966', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('628faa74-5251-481a-8c71-6c7784525c31', 'New Renaissance Theatre Company', 'New Renaissance Theatre Company is centered on producing plays with a focus on representation, especially for students of color. Our goal is to diversify the theatre community at Northeastern in a collaborative and friendly environment.', 'New Renaissance Theatre Company is centered on producing plays with a focus on representation, especially for students of marginalized communities. Our goal is to diversify the theatre community at Northeastern in a collaborative and friendly environment. This club will help bridge different artists and their communities into theatre at Northeastern regardless of experience level. Everyone has a voice, and everyone''s voice should be heard.', '484', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('aae74af5-e58c-435c-8d85-2d32c24a7ddb', 'No Jokes', 'No Jokes is an improv comedy troupe consisting of two groups. Our auditioned troupe performs on campus and in the Boston area. Our 2nd group is our Jams community. Jams are an open no commitment no pressure space to try out improv comedy. Come try it!', 'No Jokes is an improv troupe that serves as an outlet for people wanting to do comedic improv. Our group is twofold: an auditioned performance troupe that holds monthly shows on campus as well as other shows around the city and our Jams community. Jams are a no commitment weekly opportunity to try improv and learn the artform. Jams are held every Thursday from 8:00-9:30pm ', '613', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('8c5ae4c5-bd87-47a3-ba85-6fe0c4231bd6', 'No Limits Dance Crew', 'NLDC is a diverse group made up of students who share a passion for dance. Our organization welcomes all levels and styles and we pride ourselves on our "self-audition" process. We hold a recital at the end of each semester showcasing our members'' work!', 'NLDC is a diverse group made up of students who share a passion for dance. Our organization welcomes all levels and styles and we pride ourselves on our "self-audition" process. We hold a recital at the end of each semester showcasing our members'' work!', '297', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b21fcf9a-1969-498a-a47e-53e7cf06ce7d', 'Nor''easters A Cappella', 'Northeastern''s premier co-ed a cappella group', 'Northeastern''s premier co-ed a cappella group', '442', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('1407cf7f-5299-4a2f-82b8-a50e5c1df406', 'Noreste Ballet Company', 'Noreste Ballet Company (NBC) is Northeastern University''s only ballet-focused organization for dancers of all levels and backgrounds. Our members participate in weekly classes and classic ballet performances such as The Nutcracker, Swan Lake, and more. ', 'Noreste Ballet Company’s motto is “A Classical Ballet Company Without Barriers.” Everyone at all experience levels is welcome to join NBC. We are a resource for anyone interested in Classical Ballet who wants a way to perfect their technique and perform. NBC makes Classical Ballet accessible to those who could not continue or have never begun. - -We hold no-cut auditions for performances at the end of each semester. These performances are derived from Ballet pieces such as The Nutcracker, Swan Lake, Aurora, Giselle, and more. - -Our dancers perform en pointe and en flat depending on previous experience. ', '787', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('63ba4f64-1bab-4d53-97a4-58cb4223678e', 'Northeastern African Student Organization', 'For many years NASO (Northeastern University African Student Org) has served as a home away from home for African Students and students interested in Africa and African issues.', 'For many years NASO (Northeastern University African Student Organization) has served as a home away from home for African Students and students interested in Africa and African issues. Through our many events, and weekly discussions we have created a haven where African students can talk about issues concerning them and learn from each other, and have fun. Africa is the second largest continent in the world consisting of over 44 countries, hundreds of languages and much more. - -NASO Meetings: Every Thursday at 6PM', '753', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('f72f69e9-b9e4-4e70-abe3-d92499451323', 'Northeastern Association for Women in Math Student Chapter', 'The goal of NEU AWM is to empower women and other underrepresented gender identities by providing academic and professional resources while creating a communal environment with an awareness to the unique features of underrepresentation in STEM. ', 'The formation of the chapter was speareheaded with the goal of creating awareness to the underrepresentation of women in STEM, and more specifically, in mathematics. The chapter’s mission coincides with AWM’s community mission statement, “We hope our AWM Student chapters will become communities with an awareness of and sensitivity to the unique features – both positive and negative – of promoting gender equity in the mathematical community. Our aim is in reducing barriers for historically under-represented gender identities and gender expressions. To this end, the AWM community strongly stands by its nondiscrimination statement to create a supportive environment for all." - -The core of the NEU AWM Student Chapter’s work involves the development of events/workshops that aim to support chapter members in fulfilling their academic and professional goals. The chapter hopes to foster a communal environment within the math department that empowers women and other underrepresented gender identities in STEM to conduct research, experience co-op, study abroad, and more. Another portion of the Chapter’s duties is to offer resources to students via email and social media about potential opportunities in the mathematical sciences. Finally, the Chapter hopes to create spaces that allow students to network – whether on campus or through the AWM Student Chapter network – by facilitation of chapter gatherings. - - - -', '969', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('141c5e8c-8b23-4db6-b3fe-b3bfa86e1d1b', 'Northeastern Bhangra Team', 'The Northeastern Bhangra Team is a dance team that performs the Indian cultural folk dance of bhangra, originating from the state of Punjab. We have performed at numerous on-campus events and also compete around the country, primarily in the Northeast.', 'Northeastern Bhangra is a competitive dance team that performs the Indian cultural folk dance of Bhangra, originating from the state of Punjab. We have performed at numerous on-campus events and also compete around the country, primarily in the Northeast. Our members consist of students who are passionate about dance and cultural appreciation. We usually run tryouts in the beginning of the fall and spring semesters. Feel free to contact us through our email newenglandbhangraclub@gmail.com or our Instagram @newenglandbhangraclub for more information! - -Virtual Involvement Fair: https://youtu.be/TGevvpqhjkY ', '70', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('ee3f8fc7-f7ad-41a6-968d-34a19357da47', 'Northeastern Black Student Association', 'Founded in 1976, The Northeastern Black Student Association serves as the umbrella organization for all Black Student Organizations on campus. We were originally founded in 1976 to be political organization dedicated to the advancement of Black student...', 'Originally founded as a political organization in 1976, the Northeastern Black Student Association serves as the umbrella organization for Black students on campus, acting as a medium between Black students at large and officials of higher authority at Northeastern University. NBSA seeks to establish a dominant presence both on campus and in the surrounding community as an organization focused on the political, historical, and socio-cultural well being of our fellow Black students. ', '96', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('526687f9-0c1e-4494-a15c-052bcad744a9', 'Northeastern Chapter of Kappa Kappa Psi', 'A band service fraternity that seeks to support the band programs of the university through service projects, musical leadership, and other means.', 'A co-ed band service fraternity that seeks to support the band programs of the university through service, musical projects and leadership. Members from the Concert Band, Pep Band, Symphony Orchestra, and Wind Ensemble serve the whole of NU Bands in a national effort to provide support for our college and university bands while fostering lasting bonds of brotherhood. Our chapter sponsor is Assistant Director of Bands, Allison Betsold.', '726', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('37f90c6b-c8f1-41a2-9d45-ccfca86132f4', 'Northeastern Cheerleading', 'The Northeastern University cheerleading team is a talented group of student athletes brought together by their passion for cheerleading and the University. The team takes pride in representing Northeastern on and off campus. The Cheerleading team’s mi...', 'The Northeastern University cheerleading team is a talented group of student athletes brought together by their passion for cheerleading and the University. The team takes pride in representing Northeastern on and off campus. The cheer team is a competitive squad that travels to the NCA College Nationals in Daytona, Florida in April to compete Division 1. In the history of the team, NU has competed Large Coed, All-Girl, and Small Coed and even captured the title of Grand National Champions in 2002. Most recently, the team placed 8th in All-Girl Intermediate, and will be returning this year in hopes of placing in the top 5. Along with their passion for competing, the cheerleading team’s mission is to promote school spirit throughout the year at different events around campus. The cheerleaders perform at all men’s and women’s home basketball games and have a dynamic presence at a variety of campus events including new student welcome days, Convocation, Winter Fest, Beanpot, and championship games for other varsity teams. At the end of the basketball season, the team travels to cheer at the CAA Conference Championships and the NCAA tournament if applicable. During the 9 month season, the team practices at least twice a week and is expected to go to the gym independently as well to prepare for nationals. Tryouts for all students, new or returning, is typically held in September. A spring video tryout is required for incoming freshmen and those who cannot attend tryouts on campus in order to travel to NCA summer camp. Please reach out with any questions or contact us at NortheasternCheerleading@gmail.com.', '208', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('def4fefe-bcb9-4372-b31d-9a0a4a975b8c', 'Northeastern Club Archery', 'A club sport that teaches members of all levels how to shoot and compete with recurve bows. Our practices are Wednesdays and Thursdays from 7pm to 11pm, and our range is Ace Archers in Foxborough, MA. Team vans are provided, and coaches are available.', 'A club sport that teaches members of all levels how to shoot and compete with recurve bows. Our practices are Wednesdays and Thursdays from 7 pm to 11 pm, and our range is Ace Archers in Foxborough, MA. Team vans are provided, and coaches are available to help with any and all questions. If interested, contact us through our email neuarchery@gmail.com or message us on Instagram @theofficialnortheasternarchery. - - - - ', '154', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('aed9382d-3b0f-4ab5-98d1-b9cdeccdf970', 'Northeastern Club Badminton', 'We are the competitive badminton team here at Northeastern! We compete in collegiate tournaments at both a Regional and National level, and have qualified for D1 the past two consecutive years. We host intensive practices twice a week.', 'Welcome to Northeastern Club Badminton! We are the home of the competitive badminton team here at Northeastern University. Our team is dedicated to competing in collegiate tournaments at both Regional and National levels, with a proud track record of qualifying for Division 1 for the past two consecutive years. Join us for intensive practices twice a week to hone your skills and be a part of our vibrant badminton community!', '427', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('23493bea-c053-470b-abe3-bf0b3f0336d6', 'Northeastern Club Cycling', 'The NU Cycling Club consists of riders of all abilities, from Beginner to Pro, and welcomes anyone with a love for cycling, whether it’s Road, Mountain, Cyclocross, or Track. We have a comprehensive race team that competes all across New England.', 'The Northeastern University Cycling Club consists of riders of all levels and abilities, from Beginner to Pro, and welcomes anyone with a love for cycling, whether it’s Road, Mountain, Cyclocross, or Track. We have a comprehensive race team that competes in the Eastern Collegiate Cycling Conference. We consistently have one of the most successful race teams in our conference, and we are always striving to improve on our results. Our racers have competent support from team experts and a close network of friends and affiliates. At the core of our team is a dedicated group of riders who love to be on their bikes no matter what the reason. Whether you’re looking to spin around the city, find some new trails, or race in the collegiate national championship, we have a place for you.', '330', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('97169846-8eea-485b-bd67-c01c3375cfbc', 'Northeastern Club Field Hockey', 'Competitive Co-ed Club Field Hockey Team', 'Competitive Co-ed Club Field Hockey Team - -The past 17 years we have qualified for the national tournament. We are the current National Champions after winning the tournament in 2019 and 2021. Additionally, we made it to the finals in the national tournament in Fall 2017 and Spring 2019. The team consists of about 20 players.​We hold a tryout every Fall Semester, and our season runs from September to about the third week in November. We participate in a few Spring tournaments with the team that we have from the Fall. There is not a second try out, but there may be a few open practices. Please email us if this is something you might be interested in.Fall practices are 2-3 times a week, and we travel to games on Saturdays and Sundays almost every weekend. There may be a few games at night during the week, but most games are on the weekends. Some games are day trips but we also travel to Maryland and Virginia Beach.​It is a commitment, but completely worth it!', '412', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('c47eb64f-218e-4a51-aac7-c6997bf46768', 'Northeastern Club Softball', 'Northeastern Club Softball is a fun and competitive team of dedicated players. We are a part of the New England South conference, along with UConn, UMass Amherst, Stonehill, URI, and Providence. Contact nusoftball10@gmail.com for more info!', 'Established in 2010, Northeastern University Club Softball continues to grow and develop every season. In the past few years, we have been New England Regional Champions twice and competed in the NCSA in Columbus, Georgia three times. We are a member of the National Club Softball Association as part of the New England South conference, along with UConn, UMass Amherst, Stonehill, URI, and Providence. We practice two or three times a week with games on weekends in the fall and spring. Games are in triple or double-header format with both home and away games. We play official NCSA games within our conference as well as non-conference games against other clubs or community college teams. Practices are typically held on Carter field, inside Cabot Cage and at Extra Innings batting cage in Watertown. Home games are typically played on Carter field. Tryouts are held at the beginning of each semester. Please contact the e-board at nusoftball10@gmail.com to learn more about NU Club Softball!', '712', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('9c29e773-7213-43a2-b49b-f08f1f7b1605', 'Northeastern Club Tennis', 'An organization united by our love for the wonderful sport of tennis. Our team is a great balance of competitive and just-for-fun players. Tryouts are twice a year, in the fall and in the spring. Contact us if you''re interested or have questions!', 'An organization united by our love for the wonderful sport of tennis. Our team is a great balance of competitive players, and players who just want to hit for fun. Tryouts are twice a year, once in the fall and once in the spring. - -Contact us if you''re interested or have any questions!', '949', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('10fd121e-679b-4dbc-9493-be7b01532cd8', 'Northeastern DIY Craft Club', 'The purpose of the Northeastern DIY Craft Club is to provide students with a creative, comfortable atmosphere to learn and create crafts that can be worn, useful, and decorative. We will cater to club members’ artistic and creative interests by gather...', 'The purpose of the Northeastern DIY Craft Club is to provide students with a creative, comfortable atmosphere to learn and create crafts that can be worn, useful, and decorative. We will cater to club members’ artistic and creative interests by gathering their feedback and requests for future crafts. The Northeastern DIY Craft Club will reach out to the Northeastern community through holding campus events where students can view, purchase, and learn about our crafts.', '507', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('58b7de10-9218-4f92-839b-8c833d12de37', 'Northeastern Entertainment System', 'Northeastern''s game club! We meet weekly and play casual multiplayer games as well as whatever games or systems our members feel like bringing. Join our Discord here: https://discord.gg/vNEShfn', 'Northeastern''s game club! We meet weekly and play casual multiplayer games as well as whatever games or systems our members feel like bringing. We plan to be in person this semester if possible. Join our Discord here: https://discord.gg/vNEShfn', '1011', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6b759b65-9244-47dd-9e48-2f8696c4df35', 'Northeastern Game Development Club', 'The Northeastern University Game Development Club offers students the chance to explore their passion for making games with fellow students and the community beyond! Events include lectures by students and professionals, tutorials, game jams, and more!', 'The Northeastern Game Development Club offers students a space to express their passion for game development in a multitude of ways. We host weekly meetings in which we lecture students on a topic in game design and participate in short design focused activities. Our club also hosts at least 2 game jams a semester, which gives students a great opportunity to explore new roles, connect with like-minded peers, create potential portfolio pieces, and have fun along the way. We welcome all students, majors, and skill levels who are passionate about game development! - - - -If you have any questions about our club feel free to email the club at NUGDC-officers@lists.ccs.neu.edu or our President Austin at szema.a@northeastern.edu! We also have other social media linked below, feel free to follow us and interact/dm any questions you might have. - -Discord: https://discord.gg/TannubHvey - -Instagram: https://www.instagram.com/nugamedevclub/ - -Twitter: https://twitter.com/neu_gdc', '966', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('f4981899-fa3c-400d-ab75-bd290a585bf9', 'Northeastern Lady Maddogs', 'Northeastern University Women''s Rugby Football Club is a Division I club sport team. New recruits are always welcome! Contact Milia Chamas at NortheasternWomensRugby@gmail.com for more information. No experience necessary!', 'Northeastern University Women''s Rugby Football Club is a Division I club sport team. New recruits are always welcome! Contact Milia Chamas at NortheasternWomensRugby@gmail.com for more information. No experience necessary!', '812', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('0cded157-ee2b-46a9-843c-b1871bd21ff0', 'Northeastern Men''s Club Ice Hockey', 'Northeastern Men''s Club Hockey is a member of the ACHA D2 Northeast Region and the NECHA. The team has made appearances at the ACHA National Tournament in ''18, ''19, ''20, and ''22 with a Final Four finish and one trip to the National Championship game. ', 'Northeastern Men''s Club Hockey is a member of the ACHA D2 Northeast Region and the NECHA Patriot East Division. With four trips to the ACHA D2 National Tournament in the last five years, Northeastern Men''s Club Hockey has had the most national success of any team in the Northeast over the last few seasons. Northeastern Men''s Club Hockey appeared in the Final Four in 2018 and the National Championship game in 2019. The team practices twice a week at Matthews Arena during the Fall and Spring semesters along with an off-ice team workout. The season begins in mid/late September and ends in late March. #HowlinHuskies ', '58', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('46f49b5e-b5eb-4efc-b861-4367d125fae6', 'Northeastern Men''s Club Volleyball', 'Men''s Club Volleyball is a member of the New England Collegiate Volleyball League (NECVL) and National Collegiate Volleyball Federation (NCVF). We participate in a variety of tournaments in the Fall, with our regional league being in the Spring.', 'Welcome to the Northeastern Men''s Club Volleyball! We are a proud member of the New England Collegiate Volleyball League (NECVL) and the National Collegiate Volleyball Federation (NCVF). Our club thrives on camaraderie, competition, and community. Throughout the Fall, we lock horns with teams from near and far in exhilarating tournaments. As the seasons shift, we gear up for our regional league matches in the Spring. Come join us, whether you''re a seasoned player or just starting out - we have a spot for everyone!', '569', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('e3bbd599-240c-4de2-a374-efe1e2651b01', 'Northeastern Mens Lacrosse', 'Founded in 1983, the Northeastern Mens Lacrosse Team has a long history of tradition and success. As a member of the Continental Lacrosse Conference and the Men''s Collegiate Lacrosse Association, we are dedicated towards the goal of winning Nationals.', 'Founded in 1983, the Northeastern Men''s Lacrosse Team has a long history of success. We are a member of the Continental Lacrosse Conference and Men''s Collegiate Lacrosse Association, or MCLA. - -Our team offers a very competitive lacrosse experience on a national scale without the overwhelming pressures and time commitment of a DI NCAA lacrosse program. Our student-athletes are expected to maintain a full dedication to the program and team commitments but are provided the latitude to focus on academics. Players are encouraged to take part in various activities beyond lacrosse and we are proud of the diversity of experiences our players graduate from the University having participated in. - -All members of our organization are committed to winning a National Championship and we prepare, practice, and work towards that goal on a daily basis.', '690', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('50f0db32-d29b-4e91-a454-efdcab69f241', 'Northeastern Powerlifting', 'Powerlifting is a strength sport that consists of three lifts at maximal weight. Founded in 2007, Northeastern''s Club Powerlifting provides a motivating, safe, and fun environment to learn how to perform these lifts with proper technique', 'Powerlifting is a strength sport that consists of three lifts at maximal weight- squats, bench press, and deadlifts. Founded in 2007, NUPL has both men''s and women''s teams, and we strive to promote an environment where all of our teammates can grow stronger, create friendships, and compete against some of the best collegiate powerlifting teams in the country. - -We train raw in the fall semester and train equipped in the spring semester. Tryouts occur once a year in the beginning of Fall semester, and membership is a commitment for the full school year. - -We hold a competitive tryout and are looking for athletes that are eager to learn, coachable, ask good questions, and contribute positively to the team environment! You do not have to be the strongest in the room to make the team.', '1019', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5b762b9d-5adb-4394-9399-6232667536e3', 'Northeastern Recreational Climbing Club', 'The Northeastern Recreational Climbing Club (NRC) is an inclusive student organization dedicated to the growth of the climbing community on campus at the recreational level, open to all students regardless of grade, gender, skill level, or experience.', 'The Northeastern Recreational Climbing Club (NRC) is an inclusive student organization dedicated to the growth of the climbing community on campus at the recreational level. It is open to all students regardless of grade, gender, skill level, or experience. The club meets on Mondays and Wednesdays inside Ruggles at 6:20pm. We then take the T over to Rock Spot Climbing Gym by 6:30 (https://goo.gl/maps/G5Ns5DYtapo) to climb from 7-9pm. NRC also hosts meetings on campus once per month to discuss climbing, watch climbing movies, and plan outdoor climbing trips! NRC is dedicated to maintaining a great community of climbers at Northeastern. New to climbing or want to improve your technique? Want to get stronger through climbing-based workouts? Our training coordinator and e-board are committed to helping you improve your skills. Keep an eye out as we start workouts and training sessions for the year. NRC also provides many resources to the climbing community at Northeastern, including safety gear that all club members can borrow, discounts at local gyms, and discounts to select online retailers. If you’re interested in joining NRC, send us an email at nurecclimbing@gmail.com or join our Slack here: https://join.slack.com/t/nurecclimbing/shared_invite/zt-3rk41bsj-Vds9ItNlZbv_SFV~xVfE7w. You can also follow the club on Instagram @nurecclimbing for updates and community highlights. We look forward to climbing with you soon! Climb on.', '838', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('89300221-e78e-42d5-93d4-4e91add9e857', 'Northeastern Shakespeare Society', 'The Northeastern Shakespeare Society is a student-run, classical theatre group. Focusing on making Shakespeare accessible, we produce two productions a year free to the Northeastern community and general.', 'The Northeastern Shakespeare Society is a student-run, classical theatre group. Focusing on making Shakespeare accessible, we produce two productions a year free to the Northeastern community and general public.', '76', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('74eaea90-3f20-4dec-bdc6-1ac0575b3bc4', 'Northeastern Table Tennis Club', 'Founded in 2001, the Northeastern Table Tennis Club is a member of the National Collegiate Table Tennis Association. We compete in the Upper New England Division along with Dartmouth, Harvard, MIT, Boston College, UMass, and Stonehill College. Our Coed...', 'Founded in 2001, the Northeastern Table Tennis Club is a member of the National Collegiate Table Tennis Association. We compete in the Upper New England Division along with Dartmouth, Harvard, MIT, Boston College, UMass, and Stonehill College. - -Our Coed A team is currently ranked #1 in the division and continues to improve its national standing every year. Each year, our club sends its Coed A, Coed B, and Women’s teams to compete in the fall and spring divisionals. Depending on standings, the teams/individual players are invited to compete in the Northeast Regional Championships and National Championships. - -Tryouts to join these teams are usually held in the fall semester. We usually practice in the lobby of the Matthews Arena or at the Boston Table Tennis Center. While we are a competitive club, we welcome players of all levels to come play for fun. If you have any questions, please email us at northeasternttc@gmail.com, and don’t forget to follow us on Facebook for the latest announcements. Before you can participate in club activities, you must register for the club at: https://neu.dserec.com/online/clubsports_widget?fbclid=IwAR1HSljHWLbsv9LS6DWI5yrLR97WbwQHLgcbia43HuNP4VXzKC42jsvlGXs', '303', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('3d03364f-32e7-45c3-aa2c-84d533ce0fdb', 'Northeastern Tabletop Roleplaying Society', 'We are Northeastern''s tabletop roleplaying gaming group! Our goals are to bring together people who are passionate about tabletop gaming, and to provide opportunities to play them. We run a variety of games at our weekly meetings. Come join us!', 'We are Northeastern''s tabletop roleplaying gaming group! Our goals are to bring together people who are passionate about tabletop gaming, and to provide opportunities to play them. We do that by maintaining an active discord server where people can talk about the hobby, hosting one-shots at our weekly meetings, and connecting DMs to players. - - - -We welcome newbies and veterans! We have many friendly, experienced players who would love to teach or discuss various systems. - - - - - -Everything happens on our Discord. We run weekly one-shot games exploring various TTRPG systems. You can check our Google calendar for details about our weekly meetings, or turn on Discord notifications for reminders. The Discord invite code is DhTjRUU. Link is https://discord.gg/9FQRkpGTjt - -', '326', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('4e1fc549-f081-45c3-aaaf-089d09fb4c95', 'Northeastern Television', 'NUTV is Northeastern University''s only student-run video production club. Made up of three departments (Entertainment, Sports, and News), we strive to entertain and inform the campus community. From writing to filming to acting to editing, we do it all.', 'NUTV is your source for campus news, sports, and entertainment programming! As Northeastern''s only student-run film production club, NUTV is your opportunity to make whatever videos you want while making great friends! Whether you want to report stories for the News department, interview athletes for the Sports department, or make comedy sketches and drama short films with the Entertainment department, NUTV has the equipment and the know-how to help you create whatever you can imagine! - -https://www.youtube.com/watch?v=Xpj1Lw8IIo0 - -Sound fun? Sign up for our mailing list here, or feel free to come to any of our weekly meetings: News: Tuesday at 6pm EDT Cargill 097| Entertainment: Tuesdays at 7pm EDT 097 Cargill Hall| Sports: Mondays at 7:00pm EDT 243 Richards Hall. No experience necessary! - - - -Learn more about us on our website here! Check out our YouTube Channel to see all our videos here! ', '37', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('2ae529af-1098-47d7-95e9-3bbe745bad2f', 'Northeastern University Alpine Ski Team', 'The Northeastern Huskies alpine ski racing team is a United States Collegiate Ski and Snowboard Association (USCSA) alpine skiing program that represents the Northeastern University. The Huskies are a member of the Thompson Division in the East Confere...', 'The Northeastern Huskies alpine ski racing team is a United States Collegiate Ski and Snowboard Association (USCSA) alpine skiing program that represents the Northeastern University. The Huskies are a member of the Thompson Division in the East Conference.', '325', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5d869f76-26c2-46cc-80bc-efe046961bc7', 'Northeastern University American Medical Student Association', 'NU AMSA offers students from all backgrounds a chance to join a community of pre-medical focused individuals like themselves. We provide helpful seminars and activities, invite speakers, mentorship, and collaborate with other student-run organizations.', ' - -NEU AMSA is the premier pre-medical student association at Northeastern and a chapter of the National AMSA organization, the largest and oldest independent association of physicians-in-training in the United States. We host informative meetings for all pre-med students at Northeastern, from 1st years unsure of how to navigate being at pre-med at Northeastern to 5th years needing personalized advice for their pre-med path. We also offer the AMSA Mentor program, where underclassmen pre-meds are paired with an upperclassman pre-med mentor who can offer insight into how to succeed as a pre-med at Northeastern. - - - - - - - -If you are a pre-med student at Northeastern, we highly encourage you to join! We look forward to working with you all to make this a great year! - -', '806', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('0a1fdc09-8e2c-4a7e-82fc-4b7ad7d5bdc3', 'Northeastern University American Medical Women''s Association', 'The American Medical Women''s Association is an organization which functions at the local, national, and international level to advance women in medicine and improve women''s health. We achieve this by providing and developing leadership, advocacy, educa...', 'The American Medical Women''s Association is an organization which functions at the local, national, and international level to advance women in medicine and improve women''s health. We achieve this by providing and developing leadership, advocacy, education, expertise, mentoring, and strategic alliances.', '90', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6fa06ea9-3fba-4282-8533-15317d7899e2', 'Northeastern University Animation Club', 'An organization sponsored by the Chair of the Northeastern Animation/ Digital Arts department, this club is both for students enrolled in the major and also any students interested in learning more about animation. Our goal is to facilitate interest...', 'An organization sponsored by the Chair of the Northeastern Animation/ Digital Arts department, this club is both for students enrolled in the major and also any students interested in learning more about animation. Our goal is to facilitate interest in and host activities for students interested in Digital Art and Animation of all kinds including traditional, 2D and 3D, narrative, abstract, and visual effects related. It is an education and industry-geared organization, whose goal is to provide relevant lectures and technical skill-building exercises to the Northeastern University student body in the field of animation.', '380', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('dba9cbfd-0ae6-4d57-b9a1-4f207fa6e4e5', 'Northeastern University Association of Gaming Enthusiasts', 'Join Northeastern''s board game club for casual events every Friday and Saturday at 7pm in 201 Forsyth! We have plenty of games for all levels of experience and interest. Make new friends, learn new games, and find your new favorite hobby.', 'Northeastern University Association of Gaming Enthusiasts (NUAGE) is Northeastern''s official tabletop gaming club. Come and enjoy our collection of 200+ board games! We hold Casual Game Night and other events every Friday and Saturday night starting at 7PM in 201 Forsyth. We''ve got tons of board games for everyone to enjoy, so don''t hesitate to come out to meet some new people and learn some new games. Never heard of any of our games? No problem! We at NUAGE love teaching games almost as much as we love playing them!Join our community Discord to keep in touch with the club!https://discord.gg/GFWxYDS - -Or hear about our upcoming events from our Instagram! (@gamingnu) - -https://www.instagram.com/gamingnu/', '935', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('276701aa-e4c1-44a0-a835-6aea3de7204b', 'Northeastern University Association of Public Policy Students', 'NAPPS is a graduate student group founded by students in the School of Public Policy and Urban Affairs. NAPPS aims to provide a forum for students to come together, exchange ideas, and collaborate on professional development and myriad projects in a ra...', 'NAPPS is a graduate student group founded by students in the School of Public Policy and Urban Affairs. NAPPS aims to provide a forum for students to come together, exchange ideas, and collaborate on professional development and myriad projects in a range of policy fields. One of NAPPS’ strengths is its interdisciplinary nature, promoting shared interests and ambitions. NAPPS is heavily involved with career and networking development and helps students apply the skills acquired at Northeastern University to reach their goals.', '961', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('43b3e89e-4734-4574-bfeb-e2c54d035061', 'Northeastern University Chapter of the New England Water Environment Association', 'NEWEA is an organization dedicated to connecting students and professionals involved in the water environment profession. ', 'NEWEA is an organization dedicated to connecting students and professionals involved in the water and environment professions. Join us every other Thursday at 6:30pm for an enriching lecture on local projects and technologies!', '314', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('921c6376-814b-483f-874a-8de35ad1d7de', 'Northeastern University Chess Club', 'The Chess Club at Northeastern University serves as an avenue for all students to learn the ancient game of chess. We hold regularly scheduled meetings for the purpose of playing chess both formally and informally, on competitive and friendly levels.', 'Our meetings are held weekly on Wednesday in Curry 344 (7:00PM - 9:00 PM EST). Communications take place on our discord channel so please join this channel if interested in joining the chess club: https://discord.gg/sR3DRrQBP9 - -The Chess Club at Northeastern University serves as an avenue for all students to learn the ancient game of chess. We hold regularly scheduled meetings for the purpose of playing chess both formally and informally, on competitive and friendly levels. We also hold workshops introducing chess at the most basic levels to anyone interested. Don''t get checkmated on the way to play! ', '638', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('057a319b-0df3-4bca-8386-065995857228', 'Northeastern University Choral Society', 'The NU Choral Society welcomes all Northeastern students, faculty, and staff who love to sing! Check out our website (nuchorus.org) for information about our choirs, auditions, performances, and more. ', 'The NU Choral Society welcomes all Northeastern students, faculty, and staff who love to sing! Check out our website (nuchorus.org) for information about our choirs, auditions, performances, and more.', '399', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b298a4c7-4df0-4dbf-8d76-403109646e8d', 'Northeastern University Club Fencing Team ', 'The Northeastern University Club Fencing Team (NUCF) is a competitive club sports team and an active member of the New England Intercollegiate Fencing Conference. Although most of us are experienced fencers, we welcome new fencers to join practices.', 'The Northeastern University Club Fencing Team (NUCF) is a competitive club sports team and an active member of the New England Intercollegiate Fencing Conference, the United States Association of Collegiate Fencing Clubs, and the Northeast Fencing Conference.', '97', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('78eb0545-ed7d-4454-b84b-f31109f2e667', 'Northeastern University Club Gymnastics Team', 'NU Club Gymnastics is a club sports team at Northeastern. We are a member of NAIGC and compete against other universities in the area and at Nationals in April. Our practices are held at Winthrop Gymnastics Academy in Winthrop, MA under head coach Pete.', 'NU Club Gymnastics is a club sports team at Northeastern. We are a member of NAIGC and compete against other universities in the area and at Nationals in April. Our practices are held at Winthrop Gymnastics Academy in Winthrop, MA under head coach Peter Gobiel. NU Club Gymnastics consists of dedicated and passionate gymnasts who truly love the sport and are ready to show off all their hard work this year! - - - -If you are interested in learning more about the team, reach out to our email, nuclubgymnastics@gmail.com, and look for us at Fall Fest!', '741', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d74001dc-be13-42d5-9eff-2e0777ac10d7', 'Northeastern University Club Roller Hockey', 'Club Roller Hockey offers students the opportunity to continue their competitive hockey careers. We competes against schools from across the country as part of the NCRHA & ECRHA. Practices are twice a week on campus and travel to NY, NJ and PA for games.', 'Welcome to the Northeastern University Club Roller Hockey! We are a group that provides students with the platform to pursue their love for competitive hockey. As part of the NCRHA & ECRHA, we face off against teams from various schools nationwide. Our team practices twice a week on campus, perfecting our skills and building camaraderie. We also embark on exciting trips to New York, New Jersey, and Pennsylvania for thrilling matches. Join us for an exhilarating experience on the rink!', '392', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('daa84817-5534-44e4-8234-77b7cbfeffc4', 'Northeastern University Club Running', 'NU Club Running welcomes runners of many levels and experience, whether you want to compete or just have a place to run with others. As a member of NIRCA and USATF, we compete in cross country & track invitationals against fellow collegiate teams.', '** We don''t currently manage our roster through this page. If you want more info, feel free to reach out to us at nuclubrunning@gmail.com. You can also fill out our interest form to be on the list to receive info about our info session at the start of the spring semester: https://forms.gle/Z7SgXN5PZ9TEQXt69 - -.... - -The NU Club Running team welcomes runners of many levels and experience. As a member of NIRCA (National Intercollegiate Running Club Association) and USATF (USA Track & Field), we compete in cross country and track invitationals against fellow college athletes across the Northeast. We also participate in local, community-sponsored road races. Generally, the races we compete in the fall span from 5K all the way up to 8K and 10K. In the spring, we compete in intercollegiate track meets in numerous sprinting, mid/long-distance, and relay events. If you are a former cross-country and/or track athlete and are looking to experience the sense of team unity, the club team is right for you. It is an excellent opportunity to stay in shape, compete and test your progress, and meet a friendly group of people! - -https://clubrunning.sites.northeastern.edu/ - - - - ', '483', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('7acdea33-4023-451d-8b57-4fa3a44f1276', 'Northeastern University Club Spikeball', 'Club Spikeball is a student run organization founded in 2017 that is interested in promoting the sport of Roundnet. The club provides a place for students of all levels of experience to improve their skills and compete on a collegiate level.', 'Welcome to Northeastern University Club Spikeball! We are a student-run organization that was founded in 2017 with a passion for promoting the exciting sport of Roundnet. Our club offers a supportive and inclusive environment for students of all skill levels to enhance their abilities and partake in collegiate competitions. Whether you''re a beginner looking to learn the game or a seasoned player seeking friendly competition, Club Spikeball is the perfect place for you to connect with like-minded individuals and have a blast on the court!', '676', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('23b94894-12fd-4c60-8c22-8b57c28c027b', 'Northeastern University Club Taekwondo', 'Northeastern Club Taekwondo practices under the organization World Taekwondo, focusing primarily on Sparring and Poomsae elements of the martial art. We foster community among our experienced and inexperienced athletes alike. We are a family. ', 'We are a LEGION, we are a FAMILY, we are Northeastern University Taekwondo. - -As our motto states, the NEU Club Taekwondo team is proud to support and strengthen our members in and out of competition. We strive to provide opportunities for our members to grow as athletes, students, and friends. NU TKD is currently the Division I champion of the Eastern Collegiate Taekwondo Conference, and we hope to continue to achieve and expand our family.', '595', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('fbf36867-482a-40a1-a7d8-1b31f2087895', 'Northeastern University Club Weightlifting Team', 'Olympic Weightlifting is a sport which tests strength, power and technique. Athletes lift barbells loaded with weights through two movements: (a) the snatch and (b) the clean and jerk. NUWL is a Club Sport which competes at a national level.', 'Olympic Weightlifting is a sport where athletes lift barbells loaded with weights. Weightlifting tests the strength, power and technique of athletes. There are two competitive movements - the snatch and the clean and jerk. Founded in 2021, NUWL has a men''s and women''s team which compete at a national level. We create a very welcoming and friendly environment. NUWL’s mission is to create an environment to teach weightlifting to anyone who is willing to dedicate themselves to the sport and competition.', '299', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6b555915-75f5-400a-91b0-d2b4187b5b2a', 'Northeastern University College Democrats', 'The Northeastern University College Democrats promotes civic engagement through discussing our favorite political issues, promoting progressive policy, and working to elect choice Democrats on local, state, and national levels. ', 'The Northeastern University College Democrats promotes civic engagement through discussing our favorite political issues, promoting progressive policy, and working to elect choice Democrats on local, state, and national levels. - -We stand for healthcare access, a just transition to a zero-carbon economy, high-quality public education, and equity on all levels. - -Join us in our fight to pass meaningful, life-changing policies on the federal, state, local, and campus levels this spring! - - ', '777', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('79de7c55-4843-49c8-8bcb-cec8be9b9427', 'Northeastern University College Republicans', 'The Best Party On Campus at Northeastern University! We are a place where you can openly discuss politics from a conservative perspective.', '"The Best Party On Campus" The Northeastern University College Republicans meets every week to discuss the latest news, stories, and political issues from a conservative perspective, while having a few laughs along the way! Outside of weekly meetings, we also participate in other political events, including debates, watch parties, hosting speakers, campaigning, voter registration drives, and community service activities. In the past, we have hosted a trip to the Conservative Political Action Conference in Washington DC. - -If you want to openly discuss free market ideas and conservative values, join the Northeastern University College Republicans!', '248', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('29abd3d1-49b7-407c-bea4-bfcf39f044ac', 'Northeastern University Community Liaisons for Education Using STEM', 'We are a group of graduate students from a broad range of disciplines who share a passion for science communication and educational engagement. Our goal is to bring enriching educational experiences to K-12 students in the Boston area. - -', 'NUCLEUS connects Northeastern’s STEM graduate students with K-12 students in the Boston area, bringing unique topics to the classroom through accessible presentations. Our program aims to create a platform for graduate students to share their research and discuss their personal journeys in STEM with the overarching goal of promoting diversity in STEM fields. Our Thesis Pieces presentations are bite-sized versions of graduate student thesis projects targeted towards junior and senior high school students. Journeys in STEM presentations highlight our personal paths to where we are today, including challenges and triumphs we''ve faced along the way. We hope to bring these two sides of the research experience to K-12 students to provide accessible, supportive resources and encourage pursuit of STEM careers.', '768', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('99775359-37b6-45fa-b55a-ecc4da6990d9', 'Northeastern University Cricket Club', 'Northeastern University Cricket Club is the fastest rising cricket club in New England! At NUCC we strive to promote, encourage, foster and develop interest in the game of cricket at Northeastern University.', 'We are Northeastern University Cricket Club - the fastest rising cricket club in New England! At NUCC we strive to promote, encourage, foster and develop interest in the game of cricket at Northeastern University. Members of our club span from undergraduate to graduate students. Proud member of National College Cricket Association (NCCA).', '129', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('4c2e42dc-3d55-425e-b719-cc791335a0eb', 'Northeastern University Cultural and Language Learning Society', 'NUCALLS is a student-run organization that provides student-ambassador language sessions to the Northeastern community. Our sessions are community-oriented, relaxed, and fun! Additionally, we host cultural events and activities throughout the semester.', 'NUCALLS is a student-run organization that provides student-ambassador language sessions to the Northeastern community. If you''re looking to pick up a new language this semester, this is the club for you! Our sessions are community-oriented, relaxed, and fun! Additionally, we host cultural events and activities throughout the semester. Check out our instagram @nucalls and our LinkTree to learn more.', '926', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('2aad44f7-6baf-4eef-b7a9-6b342362a3b4', 'Northeastern University Dance Company', 'Founded in 2002, the Northeastern University Dance Company (NUDANCO) provides an artistic outlet and performance opportunities for NU students with a passion and commitment to dance. ', 'Founded in 2002, the Northeastern University Dance Company (NUDANCO) provides an artistic outlet and performance opportunities for NU students with a passion and commitment to dance. Our biannual showcases feature talented dancers and choreographers, who collaborate for months to produce artistic works that will entertain the NU community, dance enthusiasts, and our supportive fans. Company members contribute choreography in the genres of modern, jazz, ballet, lyrical, tap, Irish step, and other interpretive and classical dance styles. - - - - - - ', '900', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('25cd5652-e169-4c72-b84c-43427caa536a', 'Northeastern University Dance Team', 'The Northeastern University Dance Team was founded in 2003 by a group of Northeastern students passionate about dance and interested in supporting their school at a higher level. Since then, we have grown to be a spirit team staple in the athletic depa...', 'The Northeastern University Dance Team was founded in 2003 by a group of Northeastern students passionate about dance and interested in supporting their school at a higher level. Since then, we have grown to be a spirit team staple in the athletic department. Our styles typically include hip-hop, jazz, and pom, with a strong underpinning of technique in all routines. The mission of the team is to provide an avenue of performance for experienced dancers at various sporting events, as well as regional and nationally recognized competitions. We are dedicated to representing Northeastern University Athletics in a positive and energetic manner. Typically, performances consist of Men and Women''s home basketball games, as well as their respective CAA tournaments in the spring. We have also made appearances at Boston Celtics games and city-wide events. In the spring, we compete in either the Northeast Regional UDA Competition at Westfield, Massachusetts or the NDA Collegiate National Championship at Daytona Beach, Florida. NUDT is an official club sport, however, we practice, compete, and operate similarly to a collegiate varsity team. We practice 3 days a week, and work hard toward our prospective goals. We are a team of 15-20 dancers from all majors, class years, and dance backgrounds. As members, we are committed to dance and the mission of the team.', '604', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('499727df-68a8-4179-875c-b5fea3dcdf9c', 'Northeastern University Economics Society', 'The Economics Society is an academically based organization closely incorporated with the Department of Economics which serves to discuss relevant economic issues, both in the world and in the department, and develop our members professionally.', 'The Economics Society is an academically based organization closely incorporated with the Department of Economics which serves to discuss relevant economic issues, both in the world and in the department, and shall focus on promoting both social and professional economic information and networking for economics majors and any student interested in the field of economics. This will be achieved through various speakers, diffusion of information pertaining to employment and further education, and any other means which benefit the members of the society. - - - -Anyone who submits a membership request online will be added to the NUES email list to receive meeting newsletters and annoucements.', '858', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('1860790d-35fe-436d-af6b-728926f46234', 'Northeastern University Emergency Medical Services', 'NUEMS is a campus-based Emergency Medical Service organization that exists to contribute to the safety of Northeastern University as well as to provide a supportive community for students full of leadership, experiential, and educational opportunities.', 'NUEMS is a campus-based Emergency Medical Service organization that exists to contribute to the safety of Northeastern University as well as to provide a supportive community for students full of leadership, experiential, and educational opportunities. TO JOIN: Please visit www.nuems.org and fill out the membership application after requesting to join on Engage. You will not be accepted into Engage without an application. TO RECEIVE EMAILS: https://nuems.us9.list-manage.com/subscribe?u=3059fc86231fd5308b02c975e&id=cef475bb61 The group is currently discussing ways to expand our current clinical opportunities with the Northeastern University Police Department and University Health and Counseling Services (UHCS) to provide emergency services in cooperation with NUPD Officers at University Sanctioned events, similar to MIT EMS, Boston University EMS, Boston College Eagle EMS, and many other universities throughout the country. NUEMS has potential to provide an outstanding standard of care and quality medical services to the Northeastern University Community.', '307', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('743e6dc0-58fc-4c3e-a23c-a313fce44173', 'Northeastern University Energy Systems Society', 'The mission of ESS is to bridge the gap between industry and academia, as well as development and sustainability. Associated with the Energy Systems Graduate Program, the group aims to align with the interdisciplinary pillars of sustainability: Enginee..', 'The mission of ESS is to bridge the gap between industry and academia and encourage dialogue on sustainable development. Associated with the Energy Systems Graduate Program, the group aims to align with the interdisciplinary pillars of sustainability: Engineering, Business, and Policy. This is done by organizing seminars, educational visits to R&D, commercial and industrial facilities, workshops, the annual Energy Conference, and other activities that allow students an opportunity to extend their knowledge and out-of-classroom experience. These activities allow members to remain connected with one another, gain knowledge of the latest energy and sustainability trends and promote continued education within the energy community. - - ', '522', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('c412fdfb-95bf-4a02-b2c7-ee99cd38fdac', 'Northeastern University Equestrian Team', 'The Northeastern University Equestrian Team (NUEQ) is a competitive club sport competing in Zone 1, Region 2 of the Intercollegiate Horse Show Association (IHSA). The team competes in Hunt Seat Equitation classes on the flat and over fences.', 'The Northeastern University Equestrian Team (NUEQ) is a competitive club sport competing in Zone 1, Region 2 of the Intercollegiate Horse Show Association (IHSA). The club competes in Hunt Seat Equitation classes on the flat and over fences coached by Kate Roncarati at Cranberry Acres Farm in Marshfield, Massachusetts. NUEQ is open to undergraduate students of all years, experience levels, and academic backgrounds – the club encourages all riders to try out. If you are a current or prospective Northeastern University student who is interested in joining the team, please browse our website and do not hesitate to contact us at nueqteam@gmail.com.', '429', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6f68a592-9bae-48d9-898f-b0f166ce8e86', 'Northeastern University Figure Skating Club', 'We are the Northeastern Figure Skating Team, and we are comprised of skaters of many levels who love to skate, improve their skills, meet new friends, and compete on behalf of Northeastern at intercollegiate competitions!', 'Welcome to our Engage page! Our team is comprised of primarily individual skaters and solo dancers who come from a wide variety of skating backgrounds. Some of our skaters have been competitive for many years and others are just returning to the ice after having skated when they were younger. NUFSC brings together a diverse group of students through their shared love of skating. With the help and support of two wonderful coaches, the NUFSC team has given our members a way to grow as skaters while also managing their academic responsibilities. In addition to competing at the US Figure Skating Northeast Intercollegiate competitions with the goal of qualifying for the Intercollegiate National Final and performing for peers at our annual Holiday Show, we enjoy spending time together on the ice and off; team bonding and volunteering are very important to us. For even more information, you can check out our FAQs on our website. You can also browse pictures from past seasons on this page or on our website, and feel free to reach out via email, our website ''Contact Us,'' or Instagram DM. If you are interested in joining, reach out anytime! We hold application processes at the beginning of the fall and spring semesters.', '122', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('625e9786-84b5-425b-abe7-19e63e0facf1', 'Northeastern University Graduate Asian Baptist Student Koinonia', 'Christian fellowship group for Graduate Asian Baptist students.', 'Christian fellowship group for Graduate Asian Baptist students.', '447', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('1f6af80b-7d15-422b-ae3b-5c5e2271ddf9', 'Northeastern University Graduate Structural Engineering Association', 'The Northeastern University Graduate Structural Engineering Association (NGSEA) is founded to provide many opportunities for the enrichment of all graduate structural engineering students in addition to any students who are interested in topics related...', 'The Northeastern University Graduate Structural Engineering Association (NGSEA) is founded to provide many opportunities for the enrichment of all graduate structural engineering students in addition to any students who are interested in topics related to structural engineering. Students will find the chance of learning about current structural engineering projects and research from invited speakers. They will also have the opportunity to present their own research in addition to more general structural engineering topics of interest. This groups aims to provide a unique opportunity for the exchange of ideas among students and faculty. The opportunities for interaction both within and outside the university allow for the students to be further prepared for professional life. This group will be in contact with professional organizations such as such as American Society of Civil Engineers, Structural Engineers Association of Massachusetts, and Boston Society of Civil Engineers Section.', '971', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('256e5f58-5001-4295-a650-eebc3e1f8ee8', 'Northeastern University Graduate Women Coders', 'NU Grad Women Coders aims to create a conducive environment for women in tech to help each other further their ambitions and take on leadership roles in the tech world. We host weekly tech sessions presented by members of the community or inspiring ex...', 'NU Grad Women Coders aims to create a conducive environment for women in tech to help each other further their ambitions and take on leadership roles in the tech world. We host weekly tech sessions presented by members of the community or inspiring external guests. One of our primary motives is to encourage members to step outside the curricular boundaries and take up projects with social impact. We also encourage participation in Hackathons and tech meet ups happening around town. The group is open to all women in tech and supporters of women in tech.', '180', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('82e16fab-095d-4a2b-8cc1-a5847226ad46', 'Northeastern University History Association', 'The Northeastern University History Association is an organization dedicated to enriching the study of history through trips to local historic sites, museums, and more. We are open to ALL majors, just looking for those with an interest in history.', 'The Northeastern University History Association (NUHA) is the main student organization of our History Department, though we are open to ALL majors and many of our members come from other departments! We meet every week to listen to play fun history-themed games, watch student and faculty presentations, and more! We also go on monthly trips to historical sites in the Boston area, including Gloucester, Salem, and Plymouth (and they''re the best!) If you''re interested in joining or just learning more, click sign-up right here on Engage and join our distribution list here: https://lp.constantcontactpages.com/su/3yooixL/join.', '200', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('57116326-0a8c-4880-8629-6fde4217477b', 'Northeastern University Huskiers and Outing Club', 'We are the outdoors club for Northeastern University. Please visit our website (nuhoc.com) and join our slack (https://bit.ly/nuhocslack) to learn more about the club. - - - -Let''s get outside!', 'We are the Outdoors Club for Northeastern University. Please visit our website and join our Slack to learn more about our club!', '61', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b0e9906c-2a32-4da9-8d24-971e32e04842', 'Northeastern University Italian Club', 'NUIC''s goal is to create a solid, collaborative and worldwide network between past, present and future Northeastern Alumni.', 'NUIC''s goal is to create a supportive, united and worldwide network between past, present and future Northeastern students interested in the Italian lifestyle. Our community aims to involve people from all backgrounds, from International and domestic students who would like to bridge their experiences to Italian culture, to Italy''s natives who necessitate a home away from home. - - - -In our meetings, we often brainstorm ideas for future activities while eating snacks from Eataly (it''s tradition). Our club''s structure has adapted to the current Covid situation, however, we hope that, in the coming semester, our members can resume the in-person events we love so much, including discovering Boston''s best Italian restaurants, participating in the infamous Pasta Night, and organizing fun and informative discussions with other clubs, guest speakers, and faculty to foster effective communication between Northeastern''s diverse community and ensure that everyone, whether Italian or not, receives the warm and welcoming NUIC experience.', '599', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6e500d95-8144-4b7a-93fc-55570db3990e', 'Northeastern University Knits', 'NU Knits has two main goals. First, to provide a place where people can learn to knit and where people who already knit can gather and learn more about the craft. Second, to give back to our community by providing knitted items (hats, baby items, etc.).', 'NU Knits has two main goals. First, to provide a place where people can learn to knit and where people who already knit can gather and learn more about the craft. Second, to give back to our community by providing knitted objects (such as hats, baby booties, and scarves) to various charities around Boston. If you have any questions about our club or would like to be added to our mailing list, please send an email to nuknits@gmail.com! - -We meet on Thursdays from 8:00-9:00pm in Curry room #346!', '76', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('865b39d3-10af-41ad-85b1-9136c5e89cd6', 'Northeastern University League of Legends', 'The Northeastern University League of Legends (NEU LoL) is a group dedicated to students who play League of Legends (LoL), the most played video game in the world. With over 12 million players everyday, we strive to expand the connections between North...', 'The Northeastern University League of Legends (NEU LoL) is a group dedicated to students who play League of Legends (LoL) and Team Fight Tacticts, the most played video game in the world. With over 12 million players everyday, we strive to expand the connections between Northeastern students in order to create a tight-knit community of players and an opportunity for fellow players to socialize at our meetings and events. We hold events weekly which range from casual to competitive and every skill level is welcome!', '587', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('94f18e08-d7c2-4940-b6f4-ec5200c8ab57', 'Northeastern University Maddog Rugby', 'Our aim is to build our team to become the division’s premier rugby club.No experience is necessary; all of us learned the game from scratch at some point, so we are very understanding of brand new players.Our coaching staff and team is committed to te...', 'Our aim is to build our team to become the division’s premier rugby club. No experience is necessary; all of us learned the game from scratch at some point, so we are very understanding of brand new players. Our coaching staff and team is committed to teaching the basic skills necessary for learning the game, and will introduce new players to live action in a safe and appropriate manner.', '363', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6b51a14a-09ff-4799-8e0c-859d3b48ed1c', 'Northeastern University Madrigal Singers', 'The NU Madrigal Singers are a group of student musicians who rehearse and perform a capella choral music. Check us out on Facebook (NU Madrigal Singers), and Instagram (@numadrigalsingers) for more info!', 'The NU Madrigal Singers are a group of student musicians who rehearse and perform a cappella choral music. Founded in 2014 by Music Director Elijah Botkin, the group performs music from a variety of time periods and composers, including Eric Whitacre, Jake Runestad, Thomas LaVoy, and more. In rehearsing challenging music, NUMadS hopes to foster an environment that supports both musical excellence and lifelong friendship. Check us out on Facebook (NU Madrigal Singers) and Instagram (@numadrigalsingers), for information about auditions, performances, and more!', '378', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('19c83f75-e5a6-425f-a9a0-36fe4ff4d850', 'Northeastern University Marine Biology Club', 'The Marine Biology Club strives to foster and engage students with interests in marine biology, environmental science, ecology, evolution, and behavior by providing educational, recreational, and professional opportunities in correlation with the MSC.', 'The Northeastern University Marine Biology Club strives to foster and engage students with interests relating to the Marine and Environmental Science Department by providing educational, recreational, and professional opportunities in conjunction with the Marine Science Center. - -We have meetings every other Thursday from 7-8pm EST. You can find our socials and info on our linktree at linktr.ee/numarinebio.', '351', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('63a596cc-a17b-470a-a321-5995343283c2', 'Northeastern University Marketing Association', 'NUMA is Northeastern’s premier marketing club. We foster a community of driven students (of various majors and backgrounds) to explore and grow in the field of marketing.', 'Welcome! - -NUMA is Northeastern’s premier marketing club. We foster a community of driven students (of various majors and backgrounds) to explore and grow in the field of marketing. - -We provide students with opportunities to connect with employers, learn from industry experts, explore the world of marketing, and grow professionally. - -Note: Any student in any majors and years are welcome to join! (Ie. You don''t need to be a marketing major to join). - -How to get information about our events: We always post events on our social media accounts (please see the links under the social media header). - -Please reach out to us at contactnuma@gmail.com if you have any questions! ', '472', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('c7a84a30-f032-4cb8-bb7d-0adb2e900cc9', 'Northeastern University Men''s Club Soccer', 'Northeastern University Men’s Club Soccer is a student-led, year-round soccer program that offers undergraduate and graduate students the opportunity to compete at a collegiate level.', 'Northeastern University Men’s Club Soccer is a student-led, year-round soccer program that offers undergraduate and graduate students the opportunity to compete nationally. While team members study a wide range of subjects, all express the same desire and commitment to continue playing soccer competitively at the collegiate level.', '78', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5723b66f-014d-4f37-a5da-66fcd036bb8d', 'Northeastern University Men''s Club Water Polo', 'We are a team that encourages new and experienced water polo players to join and learn how to play or improve on their skills. We compete in regular tournaments throughout New England and hold regular practices.', 'We are a team that encourages new and experienced water polo players to join and learn how to play or improve on their skills. We compete in regular tournaments throughout New England and hold regular practices.', '547', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('9b568029-5b03-4e45-860e-854f382cdcc3', 'Northeastern University Mock Trial', 'Northeastern Mock Trial is a competition-based club that participates year round in simulated trials. We have three teams that develop legal cases and compete and present against different schools. Our club is open to all majors!', 'At the beginning of the school year, teams get a case involving a legal issue and have the whole year to develop arguments and compete against other schools. Members perform as both attorneys and witnesses and go through all the steps of a real trial: opening and closing arguments, witness examinations, and objections. - -Trials are a chance to gain hands-on legal experience while gaining skills in public speaking, acting, and debate.', '354', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('bc07acdd-a9da-4d14-9a53-910df7364b9f', 'Northeastern University Pharmacy Alliance', 'The mission of the Northeastern Pharmacy Alliance is to encourage all student pharmacists to become more knowledgable about the pharmacy profession and provide professional and social opportunities for advancement of student leadership.', 'NUPSA is affiliated with the Northeastern University School of Pharmacy, the American Society of Health-System Pharmacists (APhA-ASP), the national American Pharmacist’s Association - Academy of Pharmacists (ASHP), and the National Community Oncology Dispensing Association (NCODA).', '541', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('28cad9f5-b82b-4c6e-b5b5-136ef8a31b3e', 'Northeastern University Photography Club', 'NUPiC offers students an opportunity to explore the art of photography via tutorials, workshops, and outings among other photographers. All undergraduates are welcome to take photos with us and no experience is required! ', 'NUPiC offers students an opportunity to explore the art of photography for both novices and experienced hobbyists. From tutorial sessions, demonstrations, and guest speakers on the technicalities of photography, in addition to group outings and creative projects, the student-led club aims to promote a culture of collaboration and to cultivate a space for students to harness and develop their creativity. No prior knowledge or experience in photography is required. - -All important and current links can be found in our linktree below! - -https://linktr.ee/nupicofficial ', '679', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('59e489cb-20a3-4f23-9116-ba31e4a2a06a', 'Northeastern University Planeswalkers', 'NUMTG is the premier space for the Magic: The Gathering at Northeastern. We provide a space to play all MTG formats, including EDH, Modern, Cube, Draft, Pauper, and more. We welcome new players and will assist anyone in learning how to play! ', 'NUMTG is the premier space for the Magic: The Gathering at Northeastern. We provide a space to play all MTG formats, including EDH, Modern, Cube, Draft, Pauper, and more. We welcome new players and will assist anyone in learning how to play! - -If you are looking to find people to organize trips to Pandemonium Books & Games (Boston''s premier MTG game store) or to set up games outside of club meeting times, we also facilitate that as well. The club also boasts a proxied vintage power cube. - -For more info about meeting times, drafts, other events, and MTG discussion, be sure to join the Discord server below! All meetings are announced in the Discord. - -Discord Link: https://discord.gg/c2uXHCK - -We have weekly meetings on Tuesdays and Thursdays at 6:15pm where you can attend as much or as little as you wish! Check the Discord server for weekly meeting locations. - - ', '1001', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b46e8c2d-de26-4e7c-befd-32994f55bb4a', 'Northeastern University Political Review', 'The Northeastern University Political Review seeks to be a non-affiliated platform for students to publish essays and articles of the highest possible caliber on contemporary domestic and international politics, and is a weekly-meeting club. Email us!', 'The Northeastern University Political Review seeks to be a non-affiliated platform for students to publish essays and articles of the highest possible caliber on contemporary domestic and international politics, as well as critical reviews of political books, film, and events. The Political Review aspires to foster a culture of intelligent political discourse among interested individuals while promoting awareness of political issues in the campus community. The organization envisions itself as a place where students with a common interest in politics and world affairs may come together to discuss and develop their views and refine their opinions. The Political Review hopes to reflect the diversity of thought and spirit at Northeastern, including the dual ethic of academic and experiential education our school embodies. - -If you would like to sign up for our email list, please do so here. - -If you would like to view our Interest Meeting and learn more about our club, you can do so here!', '888', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5717372d-86b6-4a5d-984e-abc5f48042f8', 'Northeastern University Pre-Dental Association', 'Welcome to the NEU Pre-Dental Association!The Pre-Dental Association is a student organization at Northeastern University comprised of students aspiring to pursue a career in the dental profession. We meet monthly to discuss the application process, e...', 'Welcome to the NEU Pre-Dental Association! The Pre-Dental Association is a student organization at Northeastern University comprised of students aspiring to pursue a career in the dental profession. We meet once a month to discuss the application process, examine strategies for facing the Dental Admissions Test and engage in activities that broaden our understanding of dentistry. Reach out to us here or at neupredental@gmail.com! - - ', '907', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('654f5433-ac08-4907-b9ac-e95743cb9b9e', 'Northeastern University Pre-Veterinary Club', 'Northeastern University Pre-Veterinary Club is a group for students who are considering applying to veterinary school, and students with an interest in any field of veterinary medicine. Please email us at NUASPVC@gmail.com if you have any questions.', 'Northeastern University Pre-Veterinary Club (NUPVC) is a group for students who are considering applying to veterinary school, and students with an interest in any field of veterinary medicine. Please email us at NUASPVC@gmail.com if you have any questions!', '370', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('e97273b1-209d-4828-957f-f32ad0dfc2ea', 'Northeastern University Project Management Student Organization', 'Northeastern University Project Management Student Organization is a student-run organization founded in 2017 to advance the discipline of project management and provide students with an unmatched opportunity to gain real-life experience in the field.', 'Northeastern University Project Management (NUPM) Organization is a student-run organization founded in 2018 to advance the discipline of project management and provide students with an unmatched opportunity to gain real-life insights & professional experience. - -NUPM is the largest College of Professional Studies club, with 800+ members, including alums. - -✔️NUPM aims to cultivate a vibrant community and propel the professional development of our diverse, multinational student body by actively championing our peers'' academic and career advancement. - -✔️NUPM encourages and facilitates sharing knowledge and personal experiences, fostering a collaborative and transformative environment. We inspire and invigorate our community members by hosting dynamic, impactful programming and events. - -✔️NUPM provides robust peer support and mentorship opportunities that empower individuals to excel professionally. Through these proactive measures, we fortify our community and propel the remarkable professional growth of our diverse student body.', '649', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('012d2687-1c46-4826-81ed-067d497da60c', 'Northeastern University Real Estate Club', 'The Northeastern University Real Estate Club (NURE) is a community of students, professionals, faculty, and alumni who have a shared interest in Real Estate and want to learn about different aspects of the industry as well as ways to enter the field.', ' - - - -The Northeastern University Real Estate Club (NURE) is a community of Northeastern students, faculty, alumni, and professionals who are engaged in real estate, including but not limited to brokerage, development, investments, policy, and more (data science, law, etc.). The club regularly hosts educational events (such as a speaker series and panels), development site tours, and professional networking opportunities with industry employer professionals and students from other universities within Boston who share a passion for the Real Estate Field. Since 2010, NURE has created interactive extracurricular programs sponsored by top corporate partners, where community members can create and share professional experiences. We will continue to advocate for and host top-tier real estate programs regarding subject-matter interest demonstrated by NURE members, faculty and student alumnus. The topics NURE covers reflect the all-inclusive nature of the field and the wide-ranging disciplines of our members. - - - -', '635', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('fd4f9e2f-3278-41f2-968f-90ae4d26982a', 'Northeastern University Researchers of Neuroscience', 'Northeastern University Researchers of Neuroscience (NEURONS) is a student group for those interested in neuroscience, be it as a career or a hobby. We have speakers, panels, and group discussions about co-op, career, research, and academics.', 'Northeastern University Researchers of Neuroscience (NEURONS) is a student group for anyone interested in neuroscience. Members from all different majors are encouraged to join! - -Join the 2023-24 email list - -We meet every other Thursday from 7-8pm in IV 019 - -Our meetings from last year (2022-2023): - -1. Speaker Riley Catenacci, a neuroscience PhD student at Johns Hopkins University and a Northeastern & NEURONS alumna, spoke to us about her path to research and grad school - -2. a PhD panel (access the recording here) consisting of: - - - - - -Kieran McVeigh (he/him): 3rd-year Psych PhD Candidate from Dr. Ajay Satpute''s lab, looking at brain states of emotions using fMRI and physiological data. Lab site - -Julia Mitchell (she/her): Final-year Psych PhD Candidate from Dr. Becca Shansky''s lab, looking at DREADDs manipulation of neural circuits. Lab site - -William Li (he/him): MS4 MD-PhD Candidate from Dr. Ziv Williams'' lab, using DREADDs to identify neural circuits controlling social behavior, including compassion and competition, in mice. Lab site - - - -3. a Halloween-themed social event for those in our mentorship program, the Neuron Network! - -4. Northeastern professor Dr. Jon Matthis, who studies the neural control of movement in natural environments, gave a demo of his open-source, free motion capture software FreeMoCap. Here is a recording of the meeting; here is a short video of the software in action; and here is a folder of the data collected during the demo. - -5. An eboard panel for members to ask the eboard about classes, professors, co-op, study abroad, etc. - -6. A destress event with neuroanatomy coloring pages, cookies & milk, and tunes! - -7. Speaker Dr. Tim Morris, a computational neuroscientist, professor in Bouve, and researcher at the Center for Cognitive & Brain Health. Recording here. - -8. A Valentine''s Day-themed collab with the Psychedelic Club about "Love, Drugs, and the Brain." - -9. A "Journey into Research" panel in which eboard members and club members shared their experiences & advice getting volunteer research assistant positions in labs and applying for the PEAK research award. - -10. Brain Awareness Week! This year''s theme: The Art of Neuroimaging. On Monday, 3/14, we had guest speaker Dr. Craig Ferris, professor of psychology and pharmaceutical sciences at NEU and head of the Center for Translational Neuroimaging. On Wednesday, 3/16, we had guest speaker Dr. Bruce Rosen, MD, PhD, Director of the Athinoula A. Martinos Center for Biomedical Imaging at MGH, who oversaw development of functional magnetic resonance imaging (fMRI). Recording here. That night, we also had a neuroimaging-themed scavenger hunt based on information presented in the incredible (and accessible/prior knowledge not necessary) book Portraits of the Mind by Carl Schoonover. Highly recommend! - -11. Medical Career Panel (recording here): - - - -Fae Kayarian, 2nd year medical student at Rush University in Chicago and NEURONS alumna - -Dr. Walid Yassin, D.M.Sc, a staff scientist in the Department of Psychiatry at Beth Israel Deaconess Medical Center, Research Associate at McLean Hospital, and Instructor at Harvard Medical School - -Dr. Justin Jordan, MD, MPH, Clinical Director of the MGHH Pappas Center for Neuro-Oncology and the Director of the Family Center for Neurofibromatosis at Massachusetts General Hospital. - - - - - - - -Join our Slack (a direct messaging/group chat app) with your Northeastern email to get reminders about meetings, interact directly with other club members, and enjoy prime neuroscience memes. - -We meet every other Thursday at 7pm in International Village room 019. If you would like us to set up a zoom to accommodate your needs, please reach out. - -If you have any questions, email us at northeasternneurons@gmail.com or message one of the eboard members or post in the #general channel on Slack, or whichever channel best fits your question. Also feel free to let us know your recommendations for the club!', '58', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('906fc230-b0f9-46b5-a2ad-e0faf9832843', 'Northeastern University Songwriting Club', 'The Northeastern University Songwriting Club is a group for songwriters and musicians of all styles and experience levels to share their music and meet peers to collaborate with! We aim for a very casual atmosphere, so anyone is welcome to join any time!', 'The Northeastern University Songwriting Club is a group for songwriters and musicians of all styles and experience levels to share their music and meet peers to collaborate with! It doesn''t matter if you''ve never written a song in your life or you write every day. We welcome all who are interested, even if you just want to hang out and listen. Our goal is to make each other better musicians. We try to host open mics, jam sessions, and other performance opportunities throughout the year, and provide our club members with ways to get involved in music both on and off-campus. NUSC is a family, and all are welcome to join!', '255', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('1ca9f4b8-7f80-4c55-9af6-fd2f99060f8f', 'Northeastern University Speech Language and Hearing Association', 'The Northeastern University Student Speech-Language-Hearing Association is a chapter of the National Student Speech-Language-Hearing Association (NSSLHA) which is recognized by American Speech-Language-Hearing Association (ASHA). This is an organizatio...', 'The Northeastern University Student Speech-Language-Hearing Association is a chapter of the National Student Speech-Language-Hearing Association (NSSLHA) which is recognized by American Speech-Language-Hearing Association (ASHA). This is an organization for graduate students studying both Speech-Language Pathology and Audiology.', '951', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5321ee09-3ce6-4bad-b913-3f6276dc4653', 'Northeastern University Student Nurses Association', 'An organization and resource for all nursing students at Northeastern. - - - -', 'We aim to provide opportunities for student nurses to become more involved with the Northeastern community, the medical community in Boston, and nursing students all over the country. Our mission is to transition nursing students into the professional role of nursing through mentoring programs, contributing to nursing education, and promoting participation in healthcare focused causes as well as interdisciplinary activities. - -We love to have fun by doing activities related to our nursing interests and getting to know each other! NUSNA welcomes undergrad/BSN students, ABSN students, and grad students -- we plan to encourage participation from nursing students at all campuses through additional online events. - -Please email us at nustudentnurses@gmail.com for more info or request membership on Engage and we ill add you to our email list :) Follow us on instagram @nustudentnurses for updates!', '415', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b4bc9693-e91e-4c0d-bb62-0a124062903f', 'Northeastern University Supply Chain Management Club', 'Established with the mission to foster learning, networking, and professional development, NUSCM brings together students who share a common interest in supply chain management.', 'Established with the mission to foster learning, networking, and professional development, NUSCM brings together students who share a common interest in supply chain management. - - - -Sign up for our mailing list to stay up to date on our latest events!', '826', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('1a942a05-fc2e-4d57-8d58-4ffe1fdd3e2e', 'Northeastern University Sustainable Building Organization', 'NUSBO seeks to engage and connect members interested in the field of sustainable building. Through meetings, events, and the SBSY Speaker Series, NUSBO fosters multi-disciplinary relationships between students on campus and professionals in the industry.', 'NUSBO (Northeastern University Sustainable Building Organization) seeks to engage and connect members interested in the fields of sustainable building design, building science, building energy performance and simulation, sustainable architecture, and building life-cycle assessment. Through meetings, on-campus and off-campus events, and the SBSY Speaker Series, NUSBO fosters multi-disciplinary relationships between students on campus and professionals in the industry. NUSBO is open to graduate and undergraduate students from any field. - -Please check out our website to learn more about our organization and what we have to offer you this year. ', '698', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('35bcadfc-f7a9-4869-921e-c87ed1a6b9c6', 'Northeastern University Swim Club', 'NUSC is a Northeastern University club sport that competes on both regional and national levels while providing members with fun and rewarding experiences.', 'NUSC is a Northeastern University club sport that competes on both regional and national levels while providing members with fun and rewarding experiences. - -In 2023, we competed at the College Club Swimming Nationals Meet at The Ohio State University. We competed against over 50 teams from around the U.S. and our Women''s team placed 11th, and we placed 19th overall.', '115', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('52e940ca-c459-4727-9b99-4148b49045d6', 'Northeastern University Symphony Orchestra', 'The Northeastern University Orchestra is a full symphonicensemble open to students, staff, and faculty from allbackgrounds and majors. It performs music from thebaroque to the present day. Its past repertoire includes full symphonies, film scores, rom...', 'The Northeastern University Orchestra is a full symphonic ensemble open to students, staff, and faculty from all backgrounds and majors. It performs music from the baroque to the present day. Its past repertoire includes full symphonies, film scores, romantic and contemporary music, and premieres of new works. Concerts are at the end of the fall and spring semesters. NUSO is open to all currently enrolled students, staff, and faculty. Rehearsals are Wednesdays from 6:15 to 8:45pm at the Fenway Center. Auditions are held for seating only, though cuts may be made at the discretion of the conductor. Auditions begin BEFORE and after the first rehearsal of the fall and spring semesters, with additional times announced at the beginning of each semester. Orchestra is an extracurricular activity, but Membership in NUSO requires enrollment in a free, one-credit elective by registering for MUSC 1906. This course may be repeated for credit. For more information, please contact us at the email nuso.secretary@gmail.com.', '974', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('95aee52a-b817-4ca2-bb5b-50c13fa7f96b', 'Northeastern University Taiwanese Student Association', 'The purpose of NTSA is to create a warm & welcoming place for whoever is interested in Taiwanese culture! - - - -**For inquiries & E-board recruitment info, contact us through: - -Instagram: @northeastern.tsa - -Email: northeastern.tsa@gmail.com', 'The purpose of NTSA is to create a warm & welcoming place for all Taiwanese students and whoever is interested in Taiwanese culture! We seek to promote a friendly atmosphere for all of our event attendees. We hope to accomplish this through fun and entertaining programs; engaging all participants in activities; efficiently and effectively resolving conflicts; and maintaining a safe environment for our events. - -**For inquiries & E-board recruitment info, contact us through:Instagram: @northeastern.tsaEmail: northeastern.tsa@gmail.com', '578', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('8762e19b-70bc-41d2-87e6-a3eebeaeb4f4', 'Northeastern University Teaching English Language and Literacy Skills', 'Northeastern University Teaching English Language and Literacy Skills (NUtells) is a student group that conducts one-on-one English as a Second Language (ESL) classes for campus employees and connects students with other external ESL opportunities.', 'We are NUtells, Northeastern University Teaching English Language and Literacy Skills. We are a fully virtual student group that provides English as a Second Language (ESL) tutoring to campus employees and the Boston community. Our goal is not only to serve learners in need of language assistance but also to build a stronger sense of community between Northeastern students and the Boston community. NUtells requires a time commitment of about an hour and a half per class, and we host many classes throughout the week, both daytime and nighttime. Tutors generally work one-on-one or with small groups of students. You don''t need any tutoring experience to join--just a friendly attitude and a desire to make a difference in our community. - -. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - -If you would like to sign up or get on our email list, please email us at nutells@gmail.com. You''re welcome to join at any time during the semester. - -. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - -For more information, see the gallery page of this site to watch a video of our first meeting for Fall 2020!', '644', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d871be0d-8b6a-4a49-a115-95bef7a5c1e4', 'Northeastern University Toastmasters', 'Toastmasters International is a world leader in communication and leadership development. Our membership is 270,000 strong. These members improve their speaking and leadership skills by attending one of the 13,000 clubs that make up our global network.', 'Do you want to develop, improve, and practice public speaking, communication, and leadership skills? Toastmasters International is a world leader in communication and leadership development. Our club strives to provide a mutually supportive and positive learning environment in which every individual member has the opportunity to develop oral communication and leadership skills, which in turn foster self-confidence and personal growth. To stay up to date on club meetings, events, and news, join our Slack here. Sign up for our mailing list here! Learn more about our club here! ', '517', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('8941ddb8-5151-49e7-b8de-c85320ae677c', 'Northeastern University Trap and Skeet Club Team', 'Nationally competitive clay target shooting team focusing on Trap, Skeet and Sporting Clays.', 'The Northeastern Trap and Skeet team competes and practices the shotgun sport disciplines of Trap, Skeet and Sporting Clays. We hold local practices once a week at Minuteman Sportsman''s Club in Burlington MA and travel to competitions held in the surrounding states.', '414', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('3c6c4b2c-5d8e-4128-8e98-2eb0d5645e47', 'Northeastern University Triathlon Team', 'As a member of the Northeast Collegiate Triathlon Conference (NECTC) and a sanctioned collegiate triathlon team by USA Triathlon, we have exposure to all of the other established collegiate triathlon teams in the northeast and across the nation', 'As a member of the Northeast Collegiate Triathlon Conference (NECTC) and a sanctioned collegiate triathlon team by USA Triathlon, we compete with collegiate triathlon teams in the northeast and across the nation. - -No experience required to join! We practice throughout the entire school year in swimming, biking, and running. The main season is August/September and USAT Nationals in April. - -**Please note that the e-board does not currently use OrgSync for announcements or notifications of ANY TYPE. If you would like to receive information about the team please email us at NUTriathlonTeam@gmail.com - - ', '687', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('fdcf66f9-3a65-47a6-b892-cd4b26cb3f80', 'Northeastern University Undergraduate Speech and Hearing Club', 'The NU Speech and Hearing Club is made up of undergraduate students who have an interest in speech-language pathology, audiology, and/or communication disorders. We strive to create a community that is committed to learning and helping others. ', 'The Northeastern University Speech and Hearing Club is made up of undergraduate students who have an interest in speech-language pathology, audiology, and/or communication disorders. We strive to create a community that is committed to learning together, community service, and changing the lives of others.', '913', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('c661d98e-cedc-4aab-81e3-57fd54002bf3', 'Northeastern University Unisons A Cappella', 'We are a TTBB contemporary a cappella group that performs today''s top songs, classic hits, holiday music, and more!', 'We are a tenor, bari-bass contemporary a cappella group that performs today''s top songs, classic hits, holiday music, and more! In recent years, the Unisons have competed in several events (including the ICCA and Boston Sings), as well as released several tracks on streaming platforms! You''ll find us performing at a variety of venues, from Boston''s Symphony Hall to our own campus'' dorm lobbies.', '301', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('2e2b7dad-e064-441c-b4bf-a2cb5da8fb79', 'Northeastern University West Coast Swing Club', 'A club focused on learning, teaching, and enjoying the west coast swing style of dance. The club wishes to provide beginner and intermediate level dance lessons, while connecting students to the larger Boston swing dance community.', 'A club focused on learning, teaching, and enjoying the west coast swing style of dance. The club provides beginner and intermediate level dance lessons, while connecting students to the larger Boston swing dance community. - -Lessons will be held weekly on Tuesday''s in CSC 348, with the first lesson of the semester starting on 9/12/2023. The beginner lesson is at 8:30pm, and it''s 100% beginner friendly with no partner necessary. Intermediate lessons are at 7:30pm. Hope to see you there! - -Join our Discord! This is often where our announcements get posted first!', '387', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('41a7249f-6aad-46a1-ba88-88156b9b4236', 'Northeastern University Wind Ensemble', 'The Wind Ensemble is a select group that approaches advanced repertoire and often participates in multi-media concerts. NUWE members of all majors study and perform music at a high level, coming together socially as part of the broader NUBands community.', 'The Wind Ensemble is a select group that approaches advanced repertoire and often participates in multi-media concerts. The ensemble has accompanied silent movies in original scores by student composers, accompanied live dance performance, and collaborated with guest soloists and actors, in addition to playing the great works in wind repertoire. The ensemble rehearses and performs during the fall and spring semesters, usually performing two to four concerts each term. Each year the group participates in a festival with the wind ensembles of Harvard University, Boston College, and Boston University. At the end of each term the ensemble usually shares a concert program with the Concert Band. Auditions are held at the beginning of the term, usually during the first few rehearsals and by appointment. Wind Ensemble is an extracurricular activity for many, but can also be taken as a free one-credit elective by registering for MUSC 1907. The course may be repeated for credit. The members of the Wind Ensemble come from all backgrounds and majors, and any interested member of the NU community is eligible to join. - -To inquire about auditions for the Spring 2023 semester, please email the ensemble director Allen Feinstein at a.feinstein@northeastern.edu!', '594', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('ab1eba93-397e-4bcc-b992-80d97cd38407', 'Northeastern University Women in Technology', 'A special interest group that supports women who study or are interested in Computer and Information Science at Northeastern University', 'NUWIT is a special interest group supporting women studying or interested in Computer and Information Science at Northeastern University! We host tech talks and workshops with tech companies, social events, mentorship events, student panels, and more. - -Check out our website to learn more about NUWIT and what we have to offer you this year! - -Join the NUWIT Slack: https://bit.ly/nuwit-join-slack - -Join our mailing list for email updates: http://eepurl.com/cqlrZz', '974', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('7843ccac-dcaf-4394-ab24-a5039f2212d5', 'Northeastern University Women''s Squash Team', 'Interested in playing or learning squash? Wanna de-stress? Come play squash!Our home courts are in the Badger and Rosen SquashBusters Center right on campus, down the street from Ruggles. We practice four times a week from 7-9pm. The regular season run...', 'Interested in playing or learning squash? Wanna de-stress? Come play squash! Our home courts are in the Badger and Rosen SquashBusters Center right on campus, down the street from Ruggles. We practice four times a week from 7-9 pm. The regular season runs from October until Nationals in late February. The courts remain open year-round. Tryouts begin once classes resume in the fall! NO EXPERIENCE IS NECESSARY, just a positive attitude and willingness to learn!! (Hand-eye coordination is a bonus, of course). Background: The Northeastern squash program is a club team founded by students in the fall of 2004. The Huskies have competed in the College Squash Association against other club and varsity programs throughout the nation in the annual quest for the National Championship. Head Coach: Sabrina Gribbel Audience: Undergraduate Facebook Page: facebook.com/northeasternsquash Email: neuwomensquash@gmail.com Instagram: gonusquash', '609', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('af8f71cd-c443-4713-8488-bd357bcb7eb9', 'Northeastern University Wrestling Club', 'The Northeastern University Wrestling Club is dedicated to sharpening the technique of wrestlers, whether new or experienced, and honing their physical fitness. We are dedicated to fostering an atmosphere of camaraderie and pushing each other to improve.', 'Northeastern University Club Wrestling is comprised of wrestlers of all experience levels. We compete in tournaments and dual meets around the northeast with a chance to wrestle at the NCWA national championships. If you have never wrestled before, we have other members who are new to the sport for you to train with, and our more experienced members are happy to coach you through the sport. Please register with us on DoSportsEasy if you plan on attending at Register (U) (northeastern.edu). - -Practice Schedule: - -Monday 6-8pm - -Wednesday 6-8pm - -Friday 6-8pm - -Sunday 11am-1pm - -Practice takes place in Marino (second floor sports court). We also volunteer regularly with Beat The Streets New England.', '209', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('47f135f3-c491-4ce5-a258-00a111c95d30', 'Northeastern University''s Film Enthusiast''s Club', 'Northeastern University Film Enthusiast Club (NUFEC) meets weekly to discuss films chosen democratically by our members, mixing in film based lectures and other special events. We also run a website dedicated to reviewing newly-released films.', 'Northeastern University''s Film Enthusiast''s Club (NUFEC) meets weekly to discuss films chosen democratically by our members, mixing in film-based lectures and other special events. We also organize weekend outings to support local theaters in our community, and run a website dedicated to reviewing newly-released films.', '1019', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('8dd78998-09ef-418a-a5d3-b0d47567b80f', 'Northeastern Women''s Club Soccer', 'NUWCS is a competitive club soccer team competing in the South Boston / Rhode Island division of the NIRSA Region I Club Soccer League.', 'The Northeastern Women’s Club Soccer team competes in the South Boston/Rhode Island division of the NIRSA Region I Club Soccer League during the regular season (September-November). Our primary competition is comprised of local teams, though our schedule often includes matches against teams from neighboring states in the New England area. Each season we aspire not only for status as the premier team in our division, but also as one of the more elite programs across the entire region. Our ultimate goal is to win the Region I Tournament that marks the culmination of each season, and subsequently secure the privilege of competing in the Championship Division of the annual National Soccer Championships. In October 2017, we achieved a regional title for the first time in NUWCS history. In 2018 and 2021, we competed in the National Soccer Championships. - - - -IMPORTANT UPDATE: The Fall 2020 season has been canceled. For latest updates on the return of women''s club soccer, email us at @nuwomensclubsoccer@gmail.com to be added to our prospective player email list.', '451', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('e1a2268c-490a-4675-91fb-29fc912ade7c', 'Northeastern Women''s Club Volleyball', 'The Northeastern Women’s Club Volleyball team is a member of the Northeast Women’s Volleyball Club League (NWVCL) and National Collegiate Volleyball Federation (NCVF). Our season runs in the Fall and Spring Semesters.', 'The Northeastern Women’s Club Volleyball team is a member of the Northeast Women’s Volleyball Club League (NWVCL) and National Collegiate Volleyball Federation (NCVF). Our season runs in the Fall and Spring Semesters. Please email neuwomensclubvball@gmail.com to be added to our email list', '214', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a68cb588-e03a-4450-b3d7-966b05512513', 'Northeastern''s All-Female Semi Professional A Cappella Group, Pitch, Please!', 'Pitch, Please! is a premier women-centered treble a cappella group at Northeastern University. They are a passionate and dynamic group that aims to push boundaries and challenges the standards of traditional collegiate a cappella.', 'Pitch, Please! is a Northeastern University women-centered treble a cappella group. Since they were founded in 2012, they have continued to push the boundaries and challenge the standards of traditional collegiate a cappella. As a competitive group, they have placed 3rd overall at ICCA Finals in 2023, performed at ICCA Finals in 2019, ICCA Semifinals in 2020 and 2021, and earned first place in the collegiate championship on the PBS show Sing that Thing! in 2019. Additionally, Pitch, Please! placed first at Haunted Harmonies in 2019, won the 22nd Annual Faneuil Hall Competition, performed on The Today Show in New York City for International Women’s Day in 2020, and sang the national anthem at the Red Sox''s inaugural Women''s Celebration game this past April. Their full-length album, Obsidian, won the 2020 Contemporary A Cappella Recording Award for Best Female Collegiate Album, and their most recent EP, Indigo, won the same award in 2023-- one of five CARAs that the group received this year. Today, you can find them performing at various venues at Northeastern University and across New England! Pitch, Please! encourages their followers to continue streaming their recent EP, Indigo, as well as their most recent single, Titivating, and to watch their most recent music video series on their YouTube channel. Keep an eye on their social media @NUpitchplease for more content!', '618', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('04fc2b20-f493-4caf-9bed-27596a67ad2f', 'NU & Improv''d', 'NU & Improv''d is Northeastern''s premier improvisational comedy troupe. - - - -We are an audition based group that performs once a month in afterHours. We host both an improv jam and auditions at the beginning of each semester. ', 'NU & Improv''d is Northeastern''s premier improvisational comedy troupe. We focus on the spontaneity of theater, creating environments, characters, and scenes on the spot based on audience participation. We are an audition based group that performs once a month in After Hours, along with performing in improv competitions around New England. - -We host a big improv jam and auditions at the beginning of each semester. - -If you enjoy laughing, relaxing, and fun, NU & Improv''d is the student group for you.', '1015', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('7d9a5c53-1c05-4684-b451-6279f5f4b1ba', 'NU American Society of Engineering Management', 'The purpose of NU ASEM is to provide education and mentorship in the area of Engineering Management to the Northeastern University community. The organization seeks to advance Engineering Management in theory and in practice and promote the development...', 'The purpose of NU ASEM is to provide education and mentorship in the area of Engineering Management to the Northeastern University community. The organization seeks to advance Engineering Management in theory and in practice and promote the development of the profession of Engineering Management for our members. We will accomplish these goals through professional development and networking opportunities with industry professionals, faculty, and fellow students during meetings on campus, through site visits, and by participating in regional opportunities related to our field. Student members will gain a broader perspective of Engineering Management and applicable fields through discussion, study, and research. Lastly, we aim to foster and maintain a high professional standard amongst our members.', '721', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('62974649-7e90-47ca-b81c-73c2eee948be', 'NU Ballroom Dance Club', 'NU Ballroom Dance Club provides free lessons in ballroom dancing at all levels. We compete at collegiate dance competitions across the Boston area, and we host fun, free socials for the Northeastern community.', 'NU Ballroom Dance Club provides free lessons in ballroom dancing at all levels. We compete at collegiate dance competitions across the Boston area, and we host fun, free socials for the Northeastern community. We pride ourselves in our accessible newcomer program that leverages our friendly community to coach new dancers and introduce them to competing at the collegiate level with our team. In addition, we bring in professional coaches to teach advanced technique classes, at no cost to attendees. We hope to provide an experience that continues to be accessible to all members of the Northeastern Community, worthwhile and fulfilling to new club members, and helpful and engaging to current members.', '428', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('609ba5af-2fa9-453f-9831-57b2144a43e8', 'NU Breakers', 'NU Breakers is a student dance group on campus aimed at practicing, preserving, and promoting Hip Hop culture. Founded in April 2011, NU Breakers is the first official student group of its kind on Northeastern’s campus.', 'NU Breakers is a student dance group on campus aimed at practicing, preserving, and promoting Hip Hop culture. Founded in April 2011, NU Breakers is the first official student group of its kind on Northeastern’s campus and has acted as a bridge between Northeastern and the larger breaking community for over a decade. Please follow us on Instagram (@nubreakers) and join our Facebook Group: NU Breakers (https://www.facebook.com/groups/NUBreakers/) for more information about practice time/beginner''s class. ', '400', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('47b58b16-9691-46a6-b575-fda8a6a7961f', 'NU Buddhist Group', 'The NU Buddhist Group meets weekly for meditation and discussion based on Buddhist teachings. We foster emotional, spiritual and mental well-being through both personal practice and our vibrant, curious community.', 'The NU Buddhist Group meets weekly for meditation and discussion based on Buddhist teachings. We foster emotional, spiritual and mental well-being through both personal practice and our vibrant, curious community. We are Buddhists of different traditions as well as non-Buddhists exploring together. Please join us as we cultivate mindfulness and love!', '788', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('92c26bd0-7e97-44e1-b594-56fd35701afb', 'NU Club Golf', 'We are current members of the National Collegiate Club Golf Association (NCCGA). We compete in approximately 5 to 10 tournaments in both the fall and the spring semesters. Any student at Northeastern is allowed (and encouraged!) to try out regardless o...', 'We are current members of the National Collegiate Club Golf Association (NCCGA). We compete in approximately 5 to 10 tournaments in both the fall and the spring semesters. Any student at Northeastern is allowed (and encouraged!) to try out regardless of skill level. We normally hold try-outs during the first weekend of the fall following a quick informational meeting for all interested golfers. You can find up-to-date information regarding the team at our Facebook page at www.facebook.com/neugolf', '18', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('2029bdb5-8d5c-4788-86aa-a6db6404cb57', 'NU COE CommLab (Campus Resource)', 'NU COE CommLab', 'The Northeastern Communication LabA Resource for Graduate Engineering Students - -The CommLab offers in-person, peer-to-peer coaching and workshopsfor graduate-level writing and communication tasks.We bring a discipline-specific perspective to assisting you with the taskat hand—whether you’re working on a manuscript, poster, presentation,or other project!', '284', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('0e5e7153-6255-4601-830c-5932d9895c0c', 'NU Concert Band', 'The Northeastern University Concert Band offers a welcoming environment in which to rehearse and perform music, and promotes musical learning and expression for Northeastern students of all abilities.', 'The Northeastern University Concert Band offers a welcoming environment in which to rehearse and perform music, and promotes musical learning and expression for Northeastern students of all abilities. Please email nucbvicepresident@gmail.com if you are interested in joining or have questions about if your instrument is typically in the concert band. Auditions are held at the beginning of each semester.', '569', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('4611c238-b84d-40d1-8c0e-d1490d40ba8c', 'NU Hacks', 'NU Hacks is a social club for hackers and makers. We meet up weekly to discuss technology, social culture in software engineering, or just anything really (even non-tech!), as well as let members demo projects they have made. ', 'NU Hacks is a social club for hackers and makers. We meet up weekly to discuss technology, social culture in software engineering, and let members demo projects they have made.', '564', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('8d9945f0-0e75-439b-87bd-06683204aebe', 'NU Mural Club', 'Northeastern Mural Club aims to merge community service with art. We provide service to the Boston and greater Boston community through the organization, planning, and development of mural projects, canvas painting donations, paint nights, and more! ', ' - -Northeastern Mural Club aims to merge community service with art. We provide service to the Boston and greater Boston community through the organization, planning, and development of mural projects, canvas painting donations, paint nights, and more! Founded in 2010, Mural Club is a growing nonprofit organization consisting of undergraduate students united in a love for art and creating art for the community within and beyond Northeastern. Over the years, the club has participated in numerous collaborations with other on campus clubs and off campus organizations to contribute to larger conversations through art. - -Sign up for emails and check out our projects on our new website! - -', '219', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('82aee5c7-f719-466d-91c7-8b1e6e46b087', 'NU Pep Band', 'The Northeastern University Pep Band plays at men''s and women''s hockey, basketball, and volleyball home games along with other special events on campus and in the surrounding community.', 'The Northeastern University Pep Band plays at women''s and men''s hockey, basketball, and volleyball home games, along with other special events on campus and in the surrounding community.', '639', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6d191bc6-1559-4cab-a06e-e17cfa503b6f', 'NU Pride', 'NU Pride is a community and safe space for Lesbians, Gays, Bisexuals, Transgenders, Queers, Asexuals, and others (LGBTQ+) on and off campus. Events are geared towards education and connection between members of the dual spectrums of sexuality and gender.', 'NU Pride is a community and safe space for Lesbians, Gays, Bisexuals, Transgenders, Queers, Asexuals, and others (LGBTQ+) on and off the Northeastern Campus. Events are geared towards education and connection between members of the dual spectrums of sexuality and gender orientation. This alliance empowers all members of the LGBTQ+ community and their allies to thrive as individuals and to meet other students within the community.', '345', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('58433bd0-2368-4f35-9819-fd9d0e7ee9ce', 'Nu Rho Psi National Honor Society in Neuroscience', 'National Honor Society open to Behavioral Neuroscience majors and minors.The purpose of Nu Rho Psi is to:(1) encourage professional interest and excellence in scholarship, particularly in neuroscience;(2) award recognition to students who have achieved...', 'National Honor Society open to Behavioral Neuroscience majors and minors. The purpose of Nu Rho Psi is to: (1) encourage professional interest and excellence in scholarship, particularly in neuroscience; (2) award recognition to students who have achieved such excellence in scholarship; (3) advance the discipline of neuroscience; encourage intellectual and social interaction between students, faculty, and professionals in neuroscience and related fields; (4) promote career development in neuroscience and related fields; (5) increase public awareness of neuroscience and its benefits for the individual and society; (6) encourage service to the community. Who may join? Membership is by invitation and is open to graduate and undergraduate men and women who are making the study of Neuroscience one of their major interests and who meet the other academic qualifications. Nu Rho Psi is also open to qualifying Neuroscience faculty and alumni of Neuroscience programs. Requirements for membership include: (a) Major or minor in Neuroscience (b) Completion of at least 3 semesters of the College course (c) Completion of at least 9 semester hours of Neuroscience-related courses (d) Undergraduate cumulative GPA of 3.5 and a minimum GPA of 3.5 in Neuroscience courses', '681', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d9f0a97b-695c-4302-916b-c34bf4537936', 'NU Science Magazine', 'NUSci is Northeastern''s student-run, student-written science magazine. We publish with the goal of informing our audience of the wonders of human discovery and progress in the world around us in an accessible, easily understood way.', 'NUSci is Northeastern''s student-run, student-written science magazine. We publish with the goal of informing our audience of the wonders of human discovery and progress in the world around us. Our magazine seeks to disseminate the latest information about science news, whether at the microscopic level or in the deepest reaches of space, in a simple and universally accessible format, bringing to our readers clear, high-quality, and well-researched journalism with an open mind and a sense of humor. We believe that when removed from a bland textbook format, science can be not only a field to discuss, but also something by which to be continually astounded and inspired.', '83', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('1a2004c9-b3fa-46ed-982d-ea5c060025d3', 'NU Sexual Health Advocacy, Resources and Education', 'Meetings are Mondays at 7pm in the CIE in Curry Student Center. Join us to learn more about reproductive justice and sexual health!', 'Meetings are Mondays at 7pm in the Center for Intercultural Engagement in the Curry Student Center. Join us to learn more about reproductive justice and sexual health! - -We are a Planned Parenthood Generation Action Group.', '746', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('649e5d2a-6a8b-463f-a26e-089375a21011', 'NU Stage Musical Theater Company', 'NU Stage Musical Theater Company is Northeastern University''s student-run musical theatre group. The organization provides any and all Northeastern students with the opportunity to be involved in musical theater productions regardless of their major. ', 'NU Stage Musical Theater Company is Northeastern University''s premiere student run musical theater group. The organization provides any and all Northeastern students with the opportunity to be involved in musical theater productions, without regard to major or concentration. NU Stage’s standards are twofold: producing high-quality productions that both group members and patrons alike can be proud of, while maintaining a high level of interest and involvement from members of the student body. Lastly, NU Stage aims to be an active part of the community through volunteer efforts and monetary donations. Visit our website for more details!', '408', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b33820a5-24af-42c4-b0ed-7b723d0bdc77', 'NUImpact', 'Founded in 2016, NUImpact is Northeastern University’s student-led impact investing initiative and investment fund. ', 'NUImpact serves as a unique resource and thought-exchange for the Northeastern community to understand purposeful capital, develop technical skills, and gain exposure to professional opportunities available in the field of impact investing. NUImpact fosters insightful discussion on campus through two complementary pillars: Educational Programming and the NUImpact Fund. Over the course of each semester, the educational wing of NUImpact hosts industry leaders and professional alumni for speaker events and workshops, leading to a robust professional network and the development of new co-op opportunities for engaged students interested in impact investing. The NUImpact Fund provides hands-on finance and social impact education through a rigorous semester-long four-step investment process undertaken by teams of student analysts. Students build technical skills through sourcing & diligence workshops and real-world assignments, developed with the council of faculty and alumni advisors alongside investment industry partners. The NUImpact Fund program culminates in final investment recommendations and capital deployment making it the premier way for Northeastern students to gain experience in impact investment and meaningful capital.', '180', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('83567200-73ee-47a6-9c0c-f448d68ba6be', 'NUSound: The Northeastern University Chapter of the Acoustical Society of America', 'NUSound aims to build a cross-disciplinary community for students who are interested in acoustics and audio to provide an environment that enables first hand experience and sharing of ideas. ', 'NUSound is a club for those fascinated by acoustics and audio, enthusiasts of the physics and sciences of sound and how it interacts with us, and students looking for social and professional networking opportunities in these fields. On a week to week basis, we host workshops that give you hands on experience with audio technology, presentations that serve to deepen your understanding of sound and acoustics, and events that will allow you to interact and make connections with fellow audiophiles.', '413', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('027f52b0-d37a-4418-a1b0-35f9227cf20d', 'Oasis', 'Oasis is a project development accelerator club serving Northeastern underclassmen with the primary goal - -to break down the barriers of entry into the computer science industry by pairing club members with experienced mentors. ', 'In the simplest terms, Oasis is a full-fledged project accelerator where every semester, a new cohort of students build a software project with the support of upperclassmen mentors. They are introduced to and taken through the key stages of the software development life cycle. While many software-oriented clubs are looking to recruit students who already know how to program and build complex systems, Oasis is a beginner-focused club where any student can contribute to a project regardless of their experience. Through weekly workshops and assisted group work times called “Hack Sessions,” the ultimate goal of Oasis is that anyone with a vision for a project they have no idea how to create can bring it to life. The mission of Oasis is to create a space for all Northeastern students, whether they have a lot of programming experience or a little programming experience, and take them through the process of building their own projects. Our intended audience ranges from first- and second-year students who want to build projects to show off to potential co-op employers on their resumes, and also caters to third and fourth year who want to take their mentorship skills to the next level and help mold the next generation of Northeastern students.', '332', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d84e774a-27f5-4df4-b0c4-b1d94bb0c846', 'Off Campus Student Services (Campus Resource)', 'Mission: Off Campus Engagement and Support at Northeastern provides support and education to students moving off campus. We provide expert knowledge and advice, student connection to Northeastern and their local community. ', 'Off Campus Engagement and Support at Northeastern provides support and education related to off-campus housing, relocation services, renter’s rights knowledge, and community connection. We offer many resources, special programs and events to help you find off-campus housing in Boston, stay connected to campus, and serve as a link to your peers and community. We also help you understand your rights and responsibilities as a renter and how to navigate landlord issues. Peer Community Ambassadors plan programs and events for you, are here to answer all of your questions, and help you meet your neighbors. Call us, email us or stop in to see us today!', '74', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('3ba73960-9584-41e6-949b-c498078249bf', 'Office of Alumni Relations (Campus Resource)', 'The Office of Alumni Relations is your catalyst to stay in touch with your lifelong Northeastern community, keep learning, access career strategies, engage with thought leaders and idea-generators, and find the resources you need to achieve what’s next.', 'Students Today. Alumni Forever. You are Northeastern.The alumni experience began when you enrolled at Northeastern. It''s never too early to learn about how Alumni Relations can help you build a robust, lifelong network, that helps you achieve what''s next now, and beyond your time at Northeastern. Stay connected with us to enrich your student experience, participate in events, and nd opportunities for leadership, career development, and networking. We''re here to help you shape your Northeastern experience.Interested in becoming an integral part of the student-alumni experience? Join one of our student organizations. - -Student Alumni Ambassadors (SAA) - - - -The Student Alumni Ambassadors (SAA) is committed to creating and maintaining the unique bond between the students and alumni of Northeastern University; striving to offer educational, social, and character enriching activities and events for all past, present, and future Huskies. - -SAA is comprised of undergraduate students representing all class years, majors, programs, and experiences. Members exemplify Northeastern pride, commitment to the university community, and an eagerness to connect current students to alumni. - -As ambassadors of the Office of Alumni Relations, SAA members are the conduit to connect students with alumni, bring awareness about opportunities students can access now and after graduation, and more importantly, make sure the Northeastern spirit lives on! Learn more about the Northeastern Student Alumni Ambassadors. Senior Year Experience Board (SYEB)The Senior Year Experience Board (SYEB) is a group of undergraduate senior volunteers charged with advising OAR the on programming, educating peers on philanthropy, and executing meetings and programming throughout the year. The SYEB works with theSenior Year Experience advisor on all aspects of the SYE to ensure that content and programming is relevant to the students and enhances their experience as seniors.', '833', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('01214497-ce5b-4e96-a962-e0f1d54afca4', 'Office of Prevention & Education at Northeastern (Campus Resource)', 'OPEN provides education, programming, assessment and referral services for Northeastern students surrounding substance use. OPEN provides supportive, confidential, and non-judgmental services; we encourage students to make informed decisions about alco...', 'The Office of Prevention and Education at Northeastern provides prevention and education services on the topics of alcohol and other drugs, sexual violence, and sexual health. We seek to provide supportive, accessible and non-judgmental services to students as well as to engage our community on wellness-related topics.', '911', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('ef8c701a-6c33-4967-b619-38d0f08fcd49', 'Office of Sustainability (Campus Resource)', 'Northeastern University''s Office of Sustainability is tasked with many aspects of carbon reduction, campus awareness/engagement, and advancing a systematic approach to sustainability in all curriculum, operations, research and engagement. ', 'Welcome to the Office of Sustainability (Campus Resource) at Northeastern University! Our dedicated team is committed to leading the charge in carbon reduction, fostering campus awareness and engagement, and championing a holistic approach to sustainability. We integrate sustainability into all facets of university life, from shaping curriculum and daily operations to driving cutting-edge research and fostering community engagement. Join us in creating a greener, more sustainable future for our campus and beyond!', '95', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('84e858a0-7a48-486d-9e9b-e410c6fb82fd', 'Omega Chi Epsilon (Chemical Engineering Honor Society)', 'Xi Chapter of the National Chemical Engineering Honor Society', 'The Northeastern chapter of the Omega Chi Epsilon Chemical Engineering Honor Society consists of highly motivated chemical engineering upperclassmen who have excelled in academics. The goal of the club is to foster academic and career success for underclassmen in the challenging major. OXE''s flexible mentoring program allows underclassmen to access advice - whenever they require it - from accomplished upperclassmen chemical engineering students who may have encountered many of the same problems and big decisions in their own undergraduate careers. - - ', '792', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('fe1ccff6-b318-4033-bc38-46a55c971eac', 'Omega Phi Beta', 'Omega Phi Beta Sorority, Incorporated was founded on March 15, 1989 at the University at Albany, State University of New York. The historical marginalization of women, particularly women of color, has had a significant impact on the process by which mu...', 'Omega Phi Beta Sorority, Incorporated was founded on March 15, 1989 at the University at Albany, State University of New York. The historical marginalization of women, particularly women of color, has had a significant impact on the process by which multi-cultural, multi-ethnic and multi-racial women ascertain educational, economic, social and political capital in American society. In response to this reality, seventeen women from various racial, ethnic, and cultural backgrounds synthesized their passion, commitment and motivation. They envisioned an organization that would unify women of color who were dedicated to correcting the injustices that have and continue to affect our communities.', '266', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5367bdbf-8797-4cf1-ab1e-08b6949fa97d', 'One for the World Northeastern', 'One for the World (OFTW) is a nationwide organization dedicated to ending extreme poverty. Using the principles of effective altruism, we help students pledge 1% of their post-graduation income to the most effective charities in the world.', 'One for the World (OFTW) is a nationwide organization that aims to revolutionize charitable giving to end extreme poverty. Our goal at OFTW Northeastern is to educate the Northeastern community about effective altruism and help students pledge 1% of their post-graduation income to the most effective charities. Our portfolio, developed in partnership with GiveWell, includes 16 efficacious charities to ensure every dollar donated has the most impact. Just a small percentage of our income can dramatically change people''s lives across the world. ', '166', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('9a66803d-d4e0-4928-8040-19e81e31f089', 'Operation Smile', 'Every three minutes a child is born with a cleft. A child with a cleft has twice the odds of dying before their first birthday. Operation Smile is an international children''s charity that performs safe effective cleft lip and cleft palate in resource p...', 'Every three minutes a child is born with a cleft. A child with a cleft has twice the odds of dying before their first birthday. Operation Smile is an international children''s charity that performs safe effective cleft lip and cleft palate in resource poor countries. We are a mobilized force of international medical professionals and caring heart. Since 1982, Operation smile- through the help of dedicated medical volunteers- has provided free surgical procedures for children and young adults. With our presence in over 60 countries we are able to heal children''s smiles and bring hope for a better future. For more information about the organization please visit www.operationsmile.org At Northeastern we work to rasie money and awareness to provide surgeries for children with cleft lip and/or palate in third world countries. We also support other community service efforts in Boston. - -Please contact operationsmileneu@gmail.com for any inquires relating to our on-campus organization. ', '64', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('c0a50d22-76b4-46d7-b045-0fc1cf98f2ca', 'Order of Omega', 'Honoring Greek leaders since 1959', 'Welcome to the Order of Omega! Established in 1959, our club is dedicated to honoring the exceptional leadership of Greek members within our community. Through a rich tradition of recognizing outstanding students, we strive to foster a spirit of unity, service, and excellence. As a member, you''ll have the opportunity to connect with like-minded individuals, participate in rewarding service projects, and uphold the values that define our organization. Join us in celebrating the legacy of Greek leadership and making a positive impact on campus and beyond!', '404', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6443dce2-85bc-4f24-b36c-65cb57ab22d4', 'Origin', 'Origin is a student-run organization that works to increase the quantity and quality of ventures in Northeastern’s ecosystem that solve scientific & technological problems through outreach and speaker events that focus on STEM and business.', 'Origin is a student-run organization that aims to increase the quantity and quality of ventures in Northeastern’s ecosystem that solve scientific & technological problems. As a student-oriented program focused on community, Origin presents the opportunity for you to learn by communicating with a diverse set of ambitious individuals in a tight-knit environment where work ethic and curiosity are most valued. If you’re ready to work hard in the space of discoveries, eager to learn from others, and excited to collaborate with equally enthusiastic students, you’ve found the right place.', '314', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('17efbb66-dc5b-46e4-be11-215534fb635e', 'Out in Business', 'Out in Business is a organization whose purpose is to create and maintain an inviting space for LGBTQ+ students of Northeastern University interested in the business field to organize, socialize, and form connections with one another.', 'Out in Business is a organization whose purpose is to create and maintain an inviting space for LGBTQ+ students of Northeastern University interested in the business field to organize, socialize, and form connections with one another, all the while cultivating and promoting the personal and professional growth of its members through the study of business and its applications in the world. ', '918', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('7849a398-638c-4b4c-bf34-3f1576d5327b', 'Out in STEM at Northeastern University', 'Out in Science, Technology, Engineering, and Mathematics (oSTEM) is a national society dedicated to LGBTQIA education, advancement, and leadership in the STEM fields.', 'Out in Science, Technology, Engineering, and Mathematics (oSTEM) is a national society dedicated to LGBTQIA education, advancement, and leadership in the STEM fields.', '1012', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('453d8638-9ee5-4536-bb8c-e4c97bb78576', 'Pakistani Student Association', 'Pakistani Student Association', 'The Pakistani Students Association at Northeastern University (PakSA at NU) aims to embrace the unity, culture, and heritage of Pakistani students. Through this student organization, we seek to provide a space where Pakistani students at Northeastern can feel connected to their culture and language in the midst of their studies. We strive to cultivate an authentic understanding and celebration of Pakistani culture on campus. ', '654', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('f5f267dd-2546-44d2-a050-2df29019a3c8', 'Pan Asian American Council (Campus Resource)', 'The Pan Asian American Council aims to provide support, training and resources for Asian American students, particularly those serving in leadership positions in their respective organizations.', 'The Pan Asian American Council aims to provide support, training and resources for Asian American students, particularly those serving in leadership positions in their respective organizations.', '356', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('65315542-f7a8-44f9-a2b7-e2130758f5be', 'Panhellenic Council', 'Panhellenic Council is responsible for overseeing 11 Panhellenic chapters: Alpha Epsilon Phi, Alpha Chi Omega,Chi Omega, Delta Phi Epsilon, Delta Zeta, Kappa Delta, Kappa Kappa Gamma, Sigma Delta Tau, Sigma Kappa, Sigma Sigma Sigma, and Phi Sigma Rho*.', 'The Northeastern University Panhellenic Council promotes shared values of friendship, leadership, scholarship, and philanthropy among women. The Panhellenic Council also strives to advance crucial relations with communities throughout Fraternity and Sorority Life, Northeastern University, and Boston. - -Panhellenic Council is responsible for overseeing the 11 chapters: Alpha Epsilon Phi, Alpha Chi Omega,Chi Omega, Delta Phi Epsilon, Delta Zeta, Kappa Delta, Kappa Kappa Gamma, Sigma Delta Tau, Sigma Kappa, Sigma Sigma Sigma, and Phi Sigma Rho*. - - - -*Phi Sigma Rho is an affiliated chapter of the Northeastern Panhellenic Council, but is not affiliated with NPC. For more information on this chapter please see their organization page on Engage. ', '63', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('91b1a3d5-1412-4a05-90c5-365ff25edd08', 'Peace Through Play', 'Peace Through Play is a student-run organization founded and based at Northeastern University. We create opportunities for the mutual empowerment of college students and Boston youth through educational games, crafts, and other learning mediums.', 'Peace Through Play is a student-run organization founded and based at Northeastern University. We create opportunities for the mutual empowerment of college students and Boston youth through educational games, crafts, and other learning mediums. - -Since 2018, Peace Through Play has been partnered with the Northeastern University Human Services Program and our faculty advisor Dr. Emily Mann, a senior research associate and teaching professor with the program. Dr. Mann''s "Science of Play" honors seminar students collaborate with our executive board each year to develop supplemental materials for our curriculum that promote the power of play with respect to child development. - -As most people may guess, play is a critical part of child development. It allows children to problem solve; cultivate their imaginations; discover their interests and improve their language, motor, and executive function skills. Peace Through Play also works to emphasize the five core social emotional learning competencies as defined by the Collaborative for Academic, Social, and Emotional Learning (CASEL). These competencies lay the foundation for each child''s success academically, socially, and otherwise. For a variety of reasons, ranging from public school budget cuts to an increasing emphasis on academic scores, play is one of the first aspects of the school day to be minimized or eliminated. Peace Through Play provides Boston youth with opportunities to reincorporate that play into their lives and development. - -Please feel free to visit our website or social media to learn more, and don''t hesitate to reach out with any questions! To hear from some of our volunteers, watch the video below. - - - -https://www.youtube.com/watch?v=Vx5eJHDoRJU - - - -We have also been featured on Northeastern''s Follow Friday series, which you can view below. - - - -https://www.youtube.com/watch?v=4xTnI7B9D-Q', '376', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('91e5b613-e46b-4703-ae64-3f0f2cff2bd5', 'Phi Alpha Delta: International Legal Fraternity of Northeastern University Frank Palmer Speare Chapter', 'With over 650 law, pre-law, and alumni chapters, Phi Alpha Delta (PAD) is the largest co-ed legal fraternity in the United States. Focused on promoting a deeper understanding of the law and the legal profession, PAD is open to students of all majors.', 'With over 650 law, pre-law, and alumni chapters, Phi Alpha Delta (PAD) is the largest co-ed legal fraternity in the United States. Focused on promoting a deeper understanding of the law and the legal profession, PAD supports is open to supporting students in all majors in their academic and professional pursuits related to law. PAD offers several resources to members, including LSAT seminars, guest speakers from the legal field, college and career fairs, discounts on prep materials, and law-related volunteer opportunities. In addition to being a professional fraternity, PAD also coordinates social events for members – both within the fraternity and with other student groups on campus. All Northeastern students are welcome to join, regardless of major or professional goals.', '826', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('017ca9fe-4ba7-4b21-8ebd-e7fe827ac99e', 'Phi Beta Sigma Fraternity Inc.', 'Phi Beta Sigma Fraternity was founded at Howard University in Washington, D.C., January 9, 1914, by three young African-American male students. The Founders, Honorable A. Langston Taylor, Honorable Leonard F. Morse, and Honorable Charles I. Brown, want...', 'Phi Beta Sigma Fraternity was founded at Howard University in Washington, D.C., January 9, 1914, by three young African-American male students. The Founders, Honorable A. Langston Taylor, Honorable Leonard F. Morse, and Honorable Charles I. Brown, wanted to organize a Greek letter fraternity that would truly exemplify the ideals of brotherhood, scholarship, and service. The Founders deeply wished to create an organization that viewed itself as “a part of” the general community rather than “apart from” the general community. They believed that each potential member should be judged by his own merits, rather than his family background or affluence…without regard to race, nationality, skin tone or texture of hair. They desired for their fraternity to exist as part of an even greater brotherhood which would be devoted to the “inclusive we” rather than the “exclusive we”. From its inception, the Founders also conceived Phi Beta Sigma as a mechanism to deliver services to the general community. Rather than gaining skills to be utilized exclusively for themselves and their immediate families, they held a deep conviction that they should return their newly acquired skills to the communities from which they had come. This deep conviction was mirrored in the Fraternity’s motto, “Culture For Service and Service For Humanity”. Today, Phi Beta Sigma has blossomed into an international organization of leaders. No longer a single entity, members of the Fraternity have been instrumental in the establishment of the Phi Beta Sigma National Foundation, the Phi Beta Sigma Federal Credit Union and The Sigma Beta Club Foundation. Zeta Phi Beta Sorority, founded in 1920 with the assistance of Phi Beta Sigma, is the sister organization of the Fraternity.', '309', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5eeb4cb4-2699-4978-96c5-898f3f7cd4d1', 'Phi Delta Chi', 'Phi Delta Chi is a professional pharmacy fraternity whose objective is to advance the science of pharmacy and its allied interests, and to foster and promote a fraternal spirit among its brothers. We pride ourselves on being a fraternity that mixes a p...', 'Phi Delta Chi is a co-ed professional pharmacy fraternity whose objective is to advance the science of pharmacy and its allied interests, and to foster and promote a fraternal spirit among its brothers. The Beta Chi Chapter at Northeastern University currently consists of 42 active Brothers and 138 alumni. Our chapter is nationally recognized for excelling in leadership, professionalism, service, scholarship, and brotherhood. In 2021, we ranked 2nd among 108 chapters of Phi Delta Chi in professionalism and service, 5th in our publication and 5th overall in the nation! - - - -Each year, we put on professional events including Bouve Health Fair, the Pharmacy Co-op and APPE Expos, fundraise for our official charity St. Jude, and attend national and regional conferences. The Beta Chi chapter focuses on leadership growth and professional development while encouraging brotherhood and academic excellence within the fraternity. We look forward to sharing our journey with you and watching your growth in the years to come. Learn more about us by visiting our website! www.phideltachibx.org - - - -If you’re interested in joining our e-mail list for Fall 2024 Recruitment or have any questions, feel free to fill out this interest form or email Jason Ssentongo (ssentongo.j@northeastern.edu) or Ehrun Omuemu (omuemu.o@northeastern.edu).', '755', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('dd3608aa-532d-474e-9f50-2a50853c7c1e', 'Phi Delta Epsilon Medical Fraternity', 'Phi Delta Epsilon includes medical and premedical chapters worldwide, in which students are invited into an expansive network of physicians and students which embraces diversity and pushes its members towards achieving the highest standards in medicine.', 'Phi Delta Epsilon was founded in 1904 at Cornell University Medical College and since then has amassed more than 150 medical and premedical chapters around the world. Students at Northeastern University could be potentially invited into an expansive network of physicians and students which embraces diversity and pushes its members towards achieving the highest standards in the medical community.', '818', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5ce1bc2e-48f1-44a7-8a58-98528cef6ecb', 'Phi Delta Theta', 'Phi Delta Theta is a recognized Northeastern fraternity composed of outstanding individuals. The fraternity operates under three guiding principles: friendship, sound learning, and moral rectitude.', 'Phi Delta Theta was organized with three principle objectives: The cultivation of friendship among its members, the acquirement individually of a high degree of mental culture, and the attainment personally of a high standard of morality. These objectives, referred to as the "Cardinal Principles," have guided over 235,000 men since 1848 when the Fraternity was founded at Miami University in Oxford, Ohio.', '808', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('2106db0a-707e-4956-bf7c-0bb1a47a5be0', 'Phi Gamma Delta', 'Phi Gamma Delta unites men in enduring friendships, stimulates the pursuit of knowledge, and builds courageous leaders who serve the world with the best that is in them.', 'Phi Gamma Delta unites men in enduring friendships, stimulates the pursuit of knowledge, and builds courageous leaders who serve the world with the best that is in them.', '690', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5f3a0b44-1a77-4385-8b14-4859bdf20dd2', 'Phi Lambda Sigma', 'Phi Lambda Sigma is the National Pharmacy Leadership Society. Northeastern''s chapter is called the Gamma Kappa chapter. We strive to foster, encourage, recognize, and promote leadership among pharmacy students.', 'The purpose of Phi Lambda Sigma, also known as the national Pharmacy Leadership Society, is to promote the development of leadership qualities, especially among pharmacy students. By peer recognition, the Society encourages participation in all pharmacy activities. Since membership crosses fraternal and organizational lines, the Society does not compete with other pharmacy organizations. - -Phi Lambda Sigma honors leadership. Members are selected by peer recognition. No greater honor can be bestowed upon an individual than to be recognized as a leader by one’s peers. Such recognition instills and enhances self-confidence, encourages the less active student to a more active role and promotes greater effort toward the advancement of pharmacy. - -The Gamma Kappa chapter at Northeastern University hosts numerous annual events for the greater School of Pharmacy community throughout the year, including the PLS Leadership Retreat, the PLS Leadership Series, and the School of Pharmacy 5K.', '48', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('94ae40df-f0b3-44f5-b25a-6e675ead69ba', 'Phi Sigma Rho', 'Phi Sigma Rho is a national social sorority for women and non-binary individuals in STEM. Our members develop the highest standard of personal integrity, strive for academic excellence, and build friendships that will last a lifetime.', 'Phi Sigma Rho is a national social sorority for women and non-binary people in engineering technologies and technical/STEM studies. Our members develop the highest standard of personal integrity, strive for academic excellence, and build friendships that will last a lifetime. Together we build the future. - -If you are interested in joining Phi Sigma Rho, we hold both Spring and Fall Recruitment. Please follow @phirhonu on Instagram to find out more and see announcements about our recruitment! - -If you would like to receive more information about Fall 2023 Recruitment, please fill out our interest form!', '259', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a40bd8bb-0771-474b-9cbd-128081e83b04', 'Pi Delta Psi Fraternity, Inc.', 'Pi Delta Psi is an Asian interest fraternity founded on four pillars: Academic Achievement, Cultural Awareness, Righteousness, and Friendship/Loyalty. Our main mission is to spread Asian American culture and empower the Asian community.', 'Pi Delta Psi was founded on February 20, 1994 in Binghamton University, State University of New York. The eleven men were responsible for architecting the guiding principles, which have now developed into one of the nation''s largest Asian Cultural Interest Fraternities. Over the next three years (1994-1996), Pi Delta Psi had expanded into the University at Buffalo and Hofstra University. Every expansion resulted in positively impacting the school and surrounding community. By 2000, Pi Delta Psi had expanded to 11 prestigious campuses spanning four states, setting a record for the fastest growing organization of its kind since inception. With a fierce growth in the brotherhood and a strengthened alumni base, the fraternity rebuilt its National Council in 1999, standardizing Pi Delta Psi throughout all its chapters. Today, the Fraternity continues to grow in size and prestige. What began as a dream for the eleven founders, has become the work and dedication of thousands across the country and across seas.', '841', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('51146862-0dc0-4c63-8405-1ab992e8a151', 'Pi Kappa Phi', 'Since our inception we have forged a brotherhood of over 100 leaders unlike any other and raised awareness for our national organization''s very own philanthropy, The Ability Experience.', 'Since our inception, we have forged a brotherhood of over 100 leaders unlike any other and raised awareness for our national organization''s very own philanthropy, The Ability Experience.', '917', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('4d66ab2e-c555-4dfa-9aae-8d7211664aa9', 'PIH Engage', 'Partners In Health Engage Northeastern (PIH Engage NEU) is building the right to health movement through advocacy, community building and fundraising. ', 'Partners In Health Engage (PIHE) is building the right to health movement by recruiting and empowering teams of dedicated volunteer community organizers. These teams drive campaigns focused on building and directing power towards generating new resources, fostering public discourse, and advocating for effective policies. - -We organize by building strong teams and by fostering alliances with like-minded groups to ensure that the right to health is highlighted in the democratic process. - -We educate by hosting discussion groups and public lectures about the right to health. - -We generate resources to fund high quality healthcare for people living in poverty. - -We advocate for global and domestic policies that further the right to health. - -Together, we demand the right to health be protected for all people, everywhere.', '837', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('e86e3800-2400-4c18-ae5f-b0f24f8a9f84', 'Pinky Swear Pack', 'We are dedicated to lightening the burden that pediatric cancer places on both children and their families. We hold a variety of events to educate, support, and create impact in the lives of children battling cancer.', 'If you would like to join our volunteer group, please email us! - - - -We are a community of like-minded individuals who educate, support, and create an impact in the fight against pediatric cancer. We hold a wide variety of events, ranging in involvement levels from hospital visits to card making. We have previously met bi-weekly on Wednesday''s and hold events regularly. ', '489', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('964843b7-e7da-4568-933b-59c9ca60a56d', 'Pre-Physician Assistant Society', 'The purpose of the Pre-PA Society is to educate students about the PA profession and guide those interested in pursing this career. The Society will help students decipher required coursework and promote academic achievement, as well as aid in the prep...', 'The purpose of the Pre-PA Society is to educate students about the PA profession and guide those interested in pursing this career. The Society will help students decipher required coursework and promote academic achievement, as well as aid in the preparation for the graduate school admission process. Furthermore, interactions with health care professionals and graduate students will give undergraduates insight to this rapidly growing and competitive field. Society meetings will also help to facilitate communication among pre-PA students.', '965', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a6e93234-d3ef-4e31-b1bd-53c5a288a66e', 'Prehistoric Life Club', 'The PLC is a club dedicated to the cultivating of knowledge and passion for all things related to prehistory. Fans of paleontology, paleobotany, and those with just some interest in learning are all welcome at all of our meetings.', 'The Prehistoric Life Club is primarily dedicated to the reignition of passion in learning about prehistory as well as providing a space for the education of prehistory on campus. Many of us once enjoyed learning about prehistory, but the education system and social pressures caused us to push it down, and lose our love for dinosaurs and other fascinating lifeforms. The PLC wants to draw that love out of those who have pushed it down and be a space for those who never lost it to gather too. We hold many kinds of events, ranging from trivia nights to educational presentations.', '455', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d72103a8-b8a0-4a6d-a698-bebe3ac5c395', 'Private Equity & Venture Capital Club', 'We strive to allow students to create connections with their peers, faculty, and professionals within the private equity and venture capital industries through club activities and initiatives throughout the semester. ', 'Welcome to the Private Equity & Venture Capital Club! Our club is dedicated to providing students with opportunities to connect with their peers, faculty members, and industry professionals within the private equity and venture capital sectors. Through engaging club activities and initiatives held throughout the semester, members can gain valuable insights, build networks, and enhance their understanding of these dynamic fields. Whether you are curious about investing or aspiring to pursue a career in finance, our club offers a vibrant community where you can learn, grow, and thrive together. Join us on this exciting journey to explore the world of private equity and venture capital!', '613', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d089f7c9-bb2e-4d00-9dc2-ba5eb11dae10', 'Progressive Student Alliance', 'United Students Against Sweatshops Local 115', 'Hello! We are Northeastern''s Progressive Student Alliance (PSA), a local affiliate of United Students Against Sweatshops that organizes for student and worker power on our campus and beyond. - -Currently, PSA is organizing an anti-militarism campaign, focused on Northeastern''s relationship with the war industry (weapons manufacturers and other companies fueling violent conflict). - -We''ve formed the Huskies Organizing with Labor (HOWL) in support of dining workers. In 2017, the dining workers'' contract was up for renewal and their union was pushing for a minimum salary of $35,000 and comprehensive health benefits. HOWL was able to organize enough student support to pressure Northeastern to agree to demands a day before workers were planning to strike. In 2022, the dining workers'' contract was up for renewal again, and we supported HOWL and the workers in their organizing. In the end, improved wages, healthcare benefits, and other conditions were won, just before a strike was likely to happen. - -We have also organized with Full-Time Non-Tenure Track (FTNTT) Faculty. Northeastern administration has now twice denied their right to a free and fair election to unionize. Since the second occurrence in 2019, PSA has been gathering student support for their campaign with SEIU Local 509. - -PSA also stands in solidarity with international campaigns. In 2017, we were successful in pressuring Northeastern to cut ties with Nike. - -Collective Liberation is at the core of everything we do. We believe that no one can be truly free unless everyone is free. - -If you''re interested in learning more, you can sign up for our mailing list and check us out on Instagram (@neu.psa)! You can find important links at linktr.ee/neu.psa and contact us at neu.psa@gmail.com.', '233', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a3bb4ecd-66c8-46fd-9e6f-81ae8477467e', 'Project Sunshine', 'Project Sunshine seeks to have college volunteers positioned to serve as role models to children facing medical challenges. Trained volunteers engage in facilitating creative arts and crafts with patients and their families.', 'Project Sunshine has active college chapters on over 60 campuses nationwide. College volunteers deliver two types of programs. The first program called TelePlay, is when small groups of patients and trained volunteers meet by video conference to engage in play and activities. The second program occurs in the medical facilities where volunteers facilitate creative arts and crafts with patients and their families. Given our close proximity in age and approachability, college volunteers are uniquely positioned to serve as role models to children facing medical challenges. - -Through volunteering, college students develop leadership skills, engage in service opportunities, and raise awareness about Project Sunshine across the country. Chapters participate in both types of volunteer program activities, organize Sending Sunshine events, and fundraise on campus to support Project Sunshine’s mission.', '127', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('52738ae4-4edf-41c1-b4ad-03fc118f3f90', 'Psychedelic Club of Northeastern', 'Our mission is to be a forum for the Northeastern community to discuss psychedelics and consciousness research through a myriad of perspectives such as psychology, culture, criminal justice, religion, and art.', 'Our mission is to be a forum for the Northeastern community to discuss psychedelics and consciousness research through a myriad of perspectives such as psychology, culture, criminal justice, religion, and art. We hope to target current Northeastern students who may be interested in learning how psychedelics can positively help out the world. A typical meeting includes discussion around current psychedelic news, forums around specific types of psychedelics, and harm reduction and help for those struggling from a psychedelic trip.', '679', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('43f659ef-e17d-49b9-abc8-da64251394e2', 'Puerto Rican Student Association', 'Our purpose is to serve as a space where Puerto Rican students can share their culture and socialize. ', '', '673', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('21e5dc15-e416-46f7-806d-cd9c6755b92c', 'Rangila', 'Rangila is an empowering and vibrant all-girls dance team that fuses the best elements of traditional Indian and modern Western styles. Rangila means ''color'', and like the word, we aspire to be as visually striking as possible.', 'Rangila is Northeastern’s premier Bollywood fusion dance team that combines the bestelements of traditional Eastern and modern Western styles of dance. We compete acrossthe country in styles such as Bollywood, Hip Hop, Contemporary, Bhangra, and more, unitedby our love for dance. We strive to build an appreciation for dance and culture. - - - -NU Rangila Promo Video 2022-2023', '308', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('032f8cf8-e928-48b6-9f68-1e629c7110a2', 'Resident Student Association', 'The Resident Student Association is a student government body dedicated to representing students living on campus. Our three pillars are programming, leadership, and advocacy to make residence halls more serviceable and livable.', 'The purpose of the RSA is to serve as the official liaison between the students living in Northeastern University (herein “University” or “NU”) residence halls and the staff and administration of the Department of Housing and Residential Life; to act as a programming organization to the students living in NU residence halls; to act as an advocacy body on behalf of the resident student population; to provide leadership development opportunities to resident students; to oversee residence hall councils; to strive to make NU residence halls a continually more serviceable and livable community; to aim for a membership that equally represents each of the residence halls on campus; to act in an advisory capacity to the resident students and the staff and administration of University offices in matters pertaining to NU residence halls; to be a means by which the Resident Activity Fee (herein “RAF”) is distributed; and to be the means by which the residence population affiliates itself with the NACURH Association of College and University Residence Halls, Inc. (herein “NACURH”).', '975', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('7cbbd91a-1034-41ec-90b3-e26bad836bd8', 'Rethink Your Drink', 'Rethink Your Drink is an organization committed to promoting healthier beverage options and sustainability both within campus and in the greater Boston community through various outreach events.', 'Rethink Your Drink is an organization committed to promoting healthier beverage options and sustainability both within campus and in the greater Boston community through various outreach events. We organize various events, panels, and tabling sessions to raise awareness regarding this mission. - -Rethink Your Drink began as a collaboration with the Boston Public Health Commission to implement a component of the Commission’s ‘Let’s Get Healthy, Boston!’, a 3-year grant from the Centers for Disease Control (CDC) to reduce obesity in Boston. As the campus-based component of this project, Rethink Your Drink encouraged members of the NU community to “rethink” their consumption of sugary beverages to reduce caloric intake and ultimately obesity. In collaboration with Northeastern''s Office of Sustainability and Energy, we have also promoted the addition of 190 filtered water stations on campus and lobbied for the inclusion of their locations on the NUGo app. Past events have included displays at Earth Day, Water Day, Sustainability Day, and the Bouve Health Fair to collect filtered water dispensers location suggestions. Our annual "Hydration Station" provides the opportunity for students and staff to try fruit-infused water recipes and distributed infuser water bottles. - - - -Meetings: every other Monday 630-7pm on Zoom - -Spring 2021 dates: 1/25, 2/8, 2/22, 3/8, 3/22, 4/5, 4/19 - - ', '605', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('e710a596-0331-4b3d-9376-f17d61c5213b', 'Revolve Dance Crew', 'Founded in 2009, Revolve Dance Crew is a hip-hop dance team at Northeastern University, consisting of dancers from a variety of backgrounds. Our dancers work to develop their own personal style and get involved in the Boston dance scene. ', 'Founded in 2009, Revolve Dance Crew is a hip-hop dance team at Northeastern University, consisting of dancers from a variety of backgrounds. Revolve strives to provide an environment for dancers to develop their own personal dance style, express their artistic and creative vision through movement, and get involved in the local Boston dance scene. Revolve aims to support different charities and nonprofits in need, selecting a cause each semester to donate their proceeds to. Overall, Revolve works to have a positive impact on not only the dancers involved but also the world around them. - -Revolve''s YouTube!', '707', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b0463c60-0912-4851-8012-6ae55742002d', 'Rho Chi Beta Tau Chapter', 'Rho Chi is the official Pharmacy honor society and is recognized nationally.', 'Rho Chi is the official Pharmacy honor society and is recognized nationally.', '695', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('29560832-55a2-4110-8fbc-733ba606582e', 'Roxbury Robotics of Northeastern University', 'Roxbury Robotics is a community outreach program for students driven to provide local Roxbury students with STEM education through service-learning.', 'Roxbury Robotics is a community outreach program for students to connect with the community around the university. Students visit a local school or community center once a week for the length of the semester to teach middle school-aged children about engineering and how to build a LEGO Robot. The semester culminates in a showcase held at Northeastern University, where kids show off their hard work in front of parents, students, and partner organizations.', '174', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('026f4d61-a301-4bd1-97a6-b934da4798af', 'Rural Health Initiatives', 'The purpose of the Rural Health Initiatives is to promote the health and well-being of rural citizens by counteracting the effects of social isolation and loneliness, improving rural health literacy, and raising donations for essential items.', 'The purpose of the Rural Health Initiatives is to promote the health and well-being of rural citizens by counteracting the effects of social isolation and loneliness, improving rural health literacy, and raising donations for essential items. Our main initiative is the Tele-Friend program. - -TELEFRIEND - Pen-pal to older adults program: This program focuses on combating issues of loneliness and social isolation in rural older adult populations. By partnering college students with a “pen-pal” older adult partner, students can engage in virtual discussions and activities to help provide companionship to those who need it most. ', '127', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('e3b07550-8ad8-41c6-b136-18d8f07926fd', 'Russian-Speaking Club', 'The primary purpose of this club is to create a network of students and faculty at Northeastern University who share an interest in the language, history and cultures of Russia and other countries of Eastern Europe and Central Asia. Our goal is to make...', 'The primary purpose of this club is to create a network of students and faculty at Northeastern University who share an interest in the language, history and cultures of Russia and other countries of Eastern Europe and Central Asia. Our goal is to make a positive impact on the Northeastern community by engaging Club members in events, actions, and debates both on campus and outside. The Club will create opportunities for intellectual discourse and meaningful action through our network of professors and external speakers, participation in community-related events organized by the Club, and through interaction with other Northeastern clubs and organizations. It will aim to elevate student cultural awareness through cultural exchange and sharing of international perspectives, student-faculty led educational seminars on real-world topics, and active support and involvement with other Russian organizations in the Boston area. In addition to the networking and leadership opportunities, the Russian-Speaking club will also host a variety of social gatherings to promote socialization and share elements of the culture and society of Russia and surrounding regions with the university community.', '328', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a6a5543e-1e39-4a13-a333-0778cdcfb6c1', 'Sandbox', 'Sandbox is Northeastern''s student-led software consultancy. We build software products for the Northeastern student body, nonprofits, and academic researchers.', 'Sandbox is Northeastern''s student-led software consultancy. Sandbox members work in teams on projects that typically last two semesters or longer. We''ve done work for clients within the academic research disciplines at Northeastern, building software products to aid researchers in various experiments on healthcare, language learning, artificial intelligence, and more. Sandbox also houses a few projects that benefit the Northeastern community (such as searchneu.com and Khoury Office Hours), providing them with development resources to keep them up, running, and improving. - - - -Check out our Introduction video: https://www.youtube.com/watch?v=6h-77kEnbtI - -Visit our linktr.ee to join our Community Slack for event updates, sign up for our mailing list, see some of our past work, and more! https://linktr.ee/sandboxnu - -We recruit new members and take new projects every fall and spring semester. Check out our website https://sandboxnu.com to learn more.', '3', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('49e5474a-ad99-4b6f-9849-9ad595a7313f', 'Sanskriti', 'Indian Students'' Association at Northeastern University.', 'We are the Indian Students'' Association at Northeastern University, Boston. We aim to keep the traditions radiant and flourishing, bridge gaps between students of diverse backgrounds, cater them to meet fellow students and provide a common platform them to showcase their talents in various art forms. - -NU Sanskriti is one of the biggest Indian Students'' Associations in the United States catering to over 7900 active Indian students at Northeastern University.', '516', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('1b37f6a1-e7b5-4691-a71b-23a23c91ad01', 'Scandinavian Student Association', 'The Scandinavian Student Association aims to build a community of support for Scandinavian students. Through the provision of bonding and cultural activities, as well as community events we strive to create a home away from home. ', 'The Scandinavian Student Association aims to build a community of support for Scandinavian students. Through the provision of bonding and cultural activities, as well as community events we strive to create a home away from home.', '764', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('670fa5f9-984e-41a8-bd7a-baa40a5814dc', 'Science Book Club', 'NEU Science Book Club''s purpose is to spark conversation amongst students of all backgrounds by discussing and analyzing fun scientific novels. SBC aims to hold volunteering events and movie/activity nights to further connect our community!', 'Science Book Club''s purpose is to spark conversation amongst students by discussing and analyzing fun scientific novels. We will primarily read non-fiction books that have to do with the sciences. We will also have volunteering events and movie/ activity nights apart from reading discussions. Hope to see you there! - -Visit our LinkTree for the meeting calendar and other important links!', '947', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('c65d8ed5-cdaa-43e2-a9d8-02872027b61a', 'Science Club for Girls Mentor Chapter at Northeastern', 'Science Club for Girls (SCFG) is an organization in the Boston area serving underrepresented girls and gender expansive youth grades K-12. At Northeastern, our club would provide students with mentorship opportunities in partnership with SCFG.', 'Welcome to the Science Club for Girls Mentor Chapter at Northeastern! Our club is an inclusive organization in the heart of Boston, dedicated to empowering underrepresented girls and gender expansive youth in grades K-12. At our chapter, we provide a safe and inspiring space for students to explore the wonders of science and technology. Join us for exciting mentorship opportunities where young minds can thrive and grow, supported by the guidance of dedicated mentors and the vibrant community of SCFG. Together, let''s ignite the spark of curiosity and passion for STEM among the future leaders of tomorrow!', '787', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5d020637-878e-4270-acbc-14c138c4f799', 'Secular Humanist Society', 'We are a group of mostly Atheist and Agnostic students, but we welcome an encourage engagement from all students! As a group we identify with humanism, and we take an interest in finding purpose and meaningful dialogue.', 'We are a group of mostly Atheist and Agnostic students, but we welcome an encourage engagement from all students! As a group we identify with humanism, and we take an interest in finding purpose and meaningful dialogue. We examine and compare the scientific and spiritual, the rational and the openly strange sides of the universe. While we are founded as a safe and welcoming community for atheists, agnostics, humanists, and skeptics, we welcome all beliefs, peoples, and creeds and are proudly non-discriminatory. - -Join our Mailchimp list! http://eepurl.com/gCj1yL', '156', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('4cbcad6d-1691-4f9c-bdf1-ab6c82958fb0', 'Security Club', 'We provide students with academic enrichment in security, through hosting workshops, talks, company events, and panels geared towards educating members about the industry and providing a supportive environment for learning and practicing security skills.', 'Security Club is a student-led group that provides students with academic enrichment, a close-knit support system, and a supportive community environment for learning about cybersecurity. We host interactive labs, workshops, tech talks, company events, and panels to educate members about the industry and provide a supportive environment for learning and practicing security skills. - - - -Our goal is to introduce students to cybersecurity in a holistic manner, enabling students to discover what specifically interests them in security early on, as well as giving them the chance to learn about the many different facets within the general field of security. - -Please join our mailing list here and the NU Cybersecurity Discord Group here.', '413', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('16be7f8a-b94e-4f25-8ab1-c9aac42f917c', 'Senior Legacy Committee (Campus Resource)', 'The Senior Legacy mission is to create a set of diverse opportunities for students to connect with one another in a meaningful way. The committee is committed to participating in a variety of events during the year to strengthen the bond between fello...', 'The Senior Legacy mission is to create a set of diverse opportunities for students to connect with one another in a meaningful way. The committee is committed to participating in a variety of events during the year to strengthen the bond between fellow seniors and encourage their peers to give back to the area of Northeastern that means the most to them. Most of all this group of seniors love Northeastern and have a lot of Husky Pride!', '142', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('bc1fc335-eddf-453c-a07a-99eaed639db4', 'Sewing Club', 'NUSews is Northeastern’s all inclusive sewing club, dedicated to creating a welcoming environment for sewers of all levels! ', 'NUSews is Northeastern’s all inclusive sewing club, dedicated to creating a welcoming environment for sewers of all levels! We aim to create a common space for sewers of all different abilities and skillsets. Throughout the year, we have several different meetings planned out, so you can learn to do things like basic embroidery, clothing alterations, making your own clothes, and more! - -Join our Discord: https://discord.gg/dngrvhMt8f - -Follow us on Instagram: https://www.instagram.com/northeasternsews/', '1022', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('25eedef6-abb2-4894-894d-035678041417', 'Sexual and Gender Based Harassment and Title IX Hearing Board', 'TBD', 'TBD', '841', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('75a74f43-9bbf-41ae-b5ad-97134dfb1b47', 'Sexual Assault Response Coalition', ' A student group dedicated to bringing better, survivor-centered resources to campus to ensure the complete safety and health of all Northeastern students. SARC seeks to make Northeastern University a safer space for survivors of sexual assault and in...', 'A student group dedicated to bringing better, survivor-centered resources to campus to ensure the complete safety and health of all Northeastern students. SARC seeks to make Northeastern University a safer space for survivors of sexual assault and intimate partner violence by defending and advocating for their rights. Also the parent organization to the NEUspeakout Instagram page. It provides a safe and supportive space for survivors to share their stories and raise awareness around the pervasiveness of sexual violence at Northeastern. All stories remain anonymous and confidential', '942', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('7aa72071-dd77-4f18-b765-00788e36186f', 'SGA Student Involvement', 'The SGA Student Involvement division represents the consensus of the Northeastern student organization community, and serves as the Student Government Association’s official liaison to student organizations. ', 'The SGA Student Involvement division represents the consensus of the Northeastern student organization community, and serves as the Student Government Association’s official liaison to student organizations. This includes advising the Center for Student Involvement and other senior Northeastern administration in all matters pertaining to student organizations. SGA Student Involvement includes the Student Involvement Board. - -The Student Involvement Board works in consultation with the Center for Student Involvement to approve changes in student organization constitutions and grant final recognition to new student organizations. - -SGA Student Involvement works to foster communication and collaboration among student organizations, resolve disputes within and between student organizations, serve as a student-to-student organizational resource, ensure student organizations are in compliance with SGA policies, and build support services to support student organization leaders in smooth and successful operations of their organizations. - -Please apply here: https://forms.gle/BjshAfbtNRWVVRkz8', '401', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('3384e776-ec3f-42ab-a8dd-dfa7f6ee352c', 'SHRM Student Chapter', 'NU SHRM Student Chapter is a student-run organization based in Boston and virtually for undergraduates, graduates, and alumni. We will have guest speakers presenting on HR topics such as Resume Building, Digital HR, Global HR, etc. ', 'NU SHRM Student Chapter is a student-run organization for undergraduates, graduates, and alumni. We are the FIRST-ever Northeastern organization to include undergraduates, graduates, and alumni!! Additionally, we are the FIRST organization to incorporate a hybrid model of in-person and virtual events at Northeastern University. - - - -We encourage all students with any major or minor to join NU SHRM. Specifically if you are interested in learning more about HR-related topics. Our meetings will be held monthly via Zoom, providing students with essential workshops on specific HR Topics such as Resume Building, Employee Relations, Compensation Benefits, Digital HR, etc. Our leadership team and NU SHRM Committees will schedule guest speakers for panel discussions related to certain HR-related topics. We want every member to feel welcome and become knowledgeable about HR''s benefits in the workplace. - - - - - - - - - -Students can join the global SHRM Association for a yearly membership of $49 and receive: - - - - - - - - - -Digital HR Magazine subscription (student members do not receive the printed magazine with their membership) - -SHRM Student Focus Magazine (quarterly supplement to HR Magazine) - -Access to SHRM Online (all resources except access to the Knowledge Center) - -Membership Directory Online search capability - -Discounted rate for the first year of professional membership upon graduation - -Discounted rate to attend SHRM Annual Student Conference and Regional Student Conference - -Eligibility to apply for SHRM Foundation Scholarships - -Discounts for HRM/business management publication and SHRM logo products at online SHRMStore - - - - - - - -If you are interested in joining our NU SHRM Student Chapter, send us an email at shrm@northeastern.edu', '519', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('4e6b3901-f133-41d9-b2df-9d7f9b6ad5de', 'Sigma Beta Rho Fraternity Inc.', 'Through their leadership, our brothers serve as role models and mentors in their communities and break down barriers between different ethnic groups, thus contributing their time and effort to attaining a better and brighter future for all. ', 'Sigma Beta Rho is the premier national multicultural fraternity in the United States. Founded in 1996 on the principles of duty to society, dedication to brotherhood, and the remembrance of cultural awareness, Sigma Beta Rho has since grown to share its goals with over 2,500 men on over 45 college campuses. - -The Northeastern University Chapter was founded on April 14th, 2007 by 13 young gentlemen. These individuals were strangers to one another, coming from different cultures, backgrounds, and lifestyles. Through the principles of Sigma Beta Rho, these 13 men grew to understand and respect one another, and celebrate the differences which make them unique. Unified through diversity, these gentlemen became known as the Alpha Class of Northeastern University. - -In the year that followed, the Alpha Class passed on the teachings of brotherhood beyond all barriers to ten additional gentlemen who were inducted as the Beta and Gamma classes of Sigma Beta Rho at Northeastern University. With the assistance of other multicultural Greeks, these 23 gentlemen pioneered the establishment of the Multicultural Greek Council at Northeastern University in the fall of 2008 and became an officially recognized multicultural Greek organization at Northeastern University. Their enthusiasm has fueled their success in the years following, and they continue to maintain an active presence in both the Northeastern and surrounding Boston communities.', '755', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('bacc180d-97c5-48ae-a2b5-fa965b9fca30', 'Sigma Delta Pi', 'National Hispanic Honor Society', 'Sigma Delta Pi is the National Collegiate Hispanic Honors Society (more information here:https://sigmadeltapi.org/about/our-history-and-mission/). - - - -Established in 1919 at the University of California in Berkeley, Sigma Delta Pi was founded as a way to further and advance the teaching of Spanish language and culture in a collegiate environment. Over the past 100 years, the initial Sigma Delta Pi chapter has expanded to over 610 chapters in 49 states. - -Our chapter, Alpha Beta Gamma, was recently established in April 2019. Under the guidance of our faculty advisors, the Alpha Beta Gamma chapter of Sigma Delta Pi seeks to enrich and further a student''s understanding of Spanish language and culture through a variety of immersive events and opportunities. - - - -Application information is emailed each semester to Spanish majors and minors. For questions about eligibility please contact the advisor, Professor Agostinelli at c.agostinelli-fucile@northeastern.edu. - - - -Cultural events hosted by our chapter are open to all Spanish students and the Northeastern community. To stay up to date on our events, please bookmark our website https://sigmadeltapiatneu.weebly.com/eventos.html and/or follow us on social media @nusigmadeltapi! ', '597', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('e8618f39-20af-49b0-964d-bf87010a17d8', 'Sigma Delta Tau, Gamma Mu', 'The mission of Sigma Delta Tau is to enrich the lifetime experience of women of similar ideals, to build lasting friendships, and to foster personal growth.', 'The mission of Sigma Delta Tau is to enrich the lifetime experience of women of similar ideals, to build lasting friendships, and to foster personal growth. Sigma Delta Tau shall encourage each member to reach her fullest potential by providing intellectual, philanthropic, leadership, and social opportunities within a framework of mutual respect and high ethical standards. We are the proud recipients of Northeastern''s Chapter of the Year 2014 and Sigma Delta Tau''s Outstanding Diamond Chapter 2015, 2016, and 2021.', '799', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('9618d07b-cd85-48d9-a7d7-8448247e045d', 'Sigma Kappa', 'Sigma Kappa sorority is comprised of a diverse collection of driven, involved, and outgoing women, bound by the values of the Sigma Kappa founders. Academically, socially, and culturally, the Kappa Omega chapter works to continuously improve the commu..', 'Sigma Kappa sorority is comprised of a diverse collection of driven, involved, and outgoing women, bound by the values of the Sigma Kappa founders. Academically, socially, and culturally, the Kappa Omega chapter works to continuously improve the community and each other, fostering a one-of-a-kind sisterhood in their collegiate years and beyond. From their philanthropic endeavors to study hours to sisterhood events, the Kappa Omega sisters of Sigma Kappa sorority are looking forward to beginning their journey of growth with each other, their university, their community, and their sisters all over the world.', '907', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('40f68f35-fbb9-4e9f-85b8-af8be32a8088', 'Sigma Phi Epsilon', 'Sigma Phi Epsilon is one of the nation''s largest fraternities with over 15,000 current members and more than 300,000 total members. SigEp was founded in 1901 at University of Richmond, and has since become a leading fraternal organization at Northeastern', 'Sigma Phi Epsilon is one of the nation''s largest fraternities with over 15,000 undergraduate members and more than 300,000 total members. SigEp was founded in 1901 at the University of Richmond, and has since become the leading fraternal organization in the country. At Northeastern, SigEp practices the Balanced Man Program, a no-hazing no-pledging approach to constantly bettering its members. We hold our core values of Virtue, Diligence, and Brotherly Love to heart in an effort to lead balanced and meaningful lives.', '942', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('522c4361-6eb9-4552-9ba4-70b73f67393d', 'Sigma Psi Zeta Sorority, Inc.', 'We are the Alpha Upsilon Charter of Sigma Psi Zeta Sorority, Inc. at Northeastern University. We chartered on March 21st, 2021, becoming the 40th official membership of Sigma Psi Zeta.', ' - - - - - - - - - - - - - - - - - - - - - -Sigma Psi Zeta is a progressive, Asian-interest, multicultural sorority. Established on March 23, 1994 at the University at Albany, our SYZters have worked together with the goal of empowering women of color and combating violence against women in its varied forms. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -We are the Alpha Upsilon Charter of Sigma Psi Zeta Sorority, Inc. at Northeastern University. We chartered on March 21st, 2021, becoming the 40th official membership of Sigma Psi Zeta. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -', '934', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('e38a5ca0-ce64-4c01-b93a-ac09a72a434a', 'Sigma Sigma Sigma', 'Sigma Sigma Sigma is a National Panhellenic Conference organization that seeks to establish sisterhood, a perpetual bond of friendship, to develop strong womanly character, and to promote high standards of conduct among its members.', 'Sigma Sigma Sigma is a National Panhellenic Conference organization that seeks to establish sisterhood, to create perpetual bonds of friendship, to develop strong womanly character, and to promote high standards of conduct among its members. Tri Sigma believes in outreach within our community. Many efforts revolve around our commitment to the Tri Sigma Foundation, including a partnership with the March of Dimes which supports premature babies and their families. Our philanthropic motto is “Sigma Serves Children,” which includes partnerships with local hospitals including Boston''s Franciscan Children''s Hospital. The sisters of Tri Sigma are focused on advancement and success and take part in valuable leadership and personal development experiences at Northeastern and post-graduation, seeking to empower each other and women around the world. We will be participating in Panhellenic COB recruitment this spring and are looking forward to meeting all of you!', '319', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('8ed1fbdc-c5cd-4778-8549-a18046584579', 'Sigma Xi', 'Sigma Xi is dedicated to the advancement of knowledge through research, service, and teaching. Our goal is to foster integrity in science and engineering and promote the public''s understanding of science for the purpose of improving the human condition.', 'The Northeastern University Chapter of Sigma Xi has two primary audiences: upperclass students with substantial independent research, and incoming students who want to become more involved in research but who have not yet done independent research. Students with substantial research may apply to become Affiliate or Associate Members Sigma Xi at the end of each Spring semester. Activities for Affiliate and Associate Members include: attending monthly chapter meetings, meetings to improve public speaking and slide creation, meetings about research awards, grants, and post-grad fellowships, executive board member-led gatherings, and meetings with research faculty and alumni to gain advice and insight. - -Students with minimal research experience seeking mentorship are well suited to becoming part of the Research Immerse Program (please note that you do NOT need to be a member of the honor society to participate in the Research Immerse Program - welcome to all Northeastern Undergraduates). The Research Immerse Program is a year-long commitment that runs from each Fall to Spring semester. Activities for Immerse Program members include: attending bi-weekly workshops that learn them how to conduct a scientific literature review by mentorship of Sigma Xi Affiliate or Associate Members, completing monthly assignments on their proposed research topic, and presenting their research at a research symposium at the end of the Spring semester. - -We also support the Think Like A Scientist program that is open to all Northeastern Undergraduates where students may mentor K-12 science experiments and projects in local Boston Public Schools. Activities for Think Like A Scientist mentors include: participating in weekly outreach programs, helping to develop curricula and lesson plans, and facilitating outreach within the Northeastern and Greater Boston communities. ', '202', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6c607886-d407-4095-b596-7028eac08a81', 'Signing Huskies at Northeastern University', 'Signing Huskies at NU (SHNU) is a space for students interested in ASL, interpretation, and Deaf culture/community to come together and learn. The club''s goal is to cultivate a deep interest and appreciation for the Deaf community, culture, and ASL. ', 'Signing Huskies at Northeastern University (SHNU) seeks to create a space for those interested in ASL, the Deaf community, Deaf culture, and interpretation to come together and learn about the Deaf community and Deaf culture as a whole. The club offers students a safe, encouraging, space to practice their ASL and interpreting skills, as well as offering workshops and presentations from guest lecturers within the Deaf and interpreting communities. Ultimately, Signing Huskies at Northeastern University aims to bring students together and cultivate a deep interest and appreciation for the Deaf community, Deaf culture, and ASL. ', '968', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('08543747-14c4-4298-a4ce-24841eb9d886', 'Silver Masque', 'Silver Masque is a student run theatre company that is committed to fostering a safe, supportive, and creative environment where students can collaborate in workshopping and producing original student work. ', 'Silver Masque is a student-run theatre company at Northeastern University, committed to fostering a safe, supportive, and creative environment in which students may collaborate in workshopping and producing original student work. - -Silver Masque offers opportunities in the following: acting, playwriting, directing, theatrical design, stage management, run crew, and more depending on programming. - -Core Values: - - - -Foster artistic innovation - -Share new stories and voices - -Cultivate meaningful relationships between emerging artists - -Ensure a safe and respectful production environment - -Build a welcoming creative community - -', '812', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('53702ae5-7311-44f8-8296-43da5fc952e0', 'Sisters in Solidarity', 'Sisters in Solidarity is an affinity group for Black cisgender and transgender women. Through unity among Black students, SiS is a haven where dynamic stories and unique experiences are shared so that we can cultivate a meaningful bond between us.', 'Sisters in Solidarity is an affinity group for Black cisgender and transgender women. Through unity among Black students, SiS is a haven where dynamic stories and unique experiences are shared so that we can cultivate a meaningful bond between us.', '426', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('0b3ecd1c-22e2-420f-b9bd-66e567b96d8a', 'Skateboarding Club', 'We are the official club on campus for all skateboarding enthusiasts!', ' - -We are Northeastern''s official organization for all skateboarding enthusiasts! - - - - - - - -Our organization is open to skaters of all skill levels and backgrounds! Whether you are a pro or have never stepped on a board before, we are happy to have you join us. We aim to create a community on campus to teach and foster the activity, art, and culture of skateboarding. - - - - - - - -Some things that we do are weekly skate sessions, impromptu skate meetups, lessons, and design sessions for creating club videos, pictures, merchandise, and even skate equipment. We also have a Slack channel for all sorts of skating discussions! - -', '440', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('488f2279-566f-4fca-b342-2d55848f31a1', 'Slow Food NU', 'We are Northeastern''s food sustainability club! Our casual weekly meetings and occasional outings focus on the intersection of food, the environment, and human health. ', 'Slow Food Northeastern University (Slow Food NU) is a part of the international Slow Food Movement: "Slow Food believes food is tied to many other aspects of life, including culture, politics, agriculture and the environment. Through our food choices we can collectively influence how food is cultivated, produced and distributed, and change the world as a result." - -Slow Food NU promotes an increased awareness of the interconnectedness of food, the environment, and human health. Slow Food NU works to increase consciousness about the food system and its relation to social justice through deliberate and meaningful service projects, educational events, and transformative dialogue. These efforts establish and sustain lasting relationships with like-minded student groups, organizations, and initiatives throughout Northeastern’s campus and surrounding Boston neighborhoods. We value the belief that all people deserve food that is good for them, good for the people who grow it, and good for the planet. We are socially conscious learners, advocates, and eaters.We welcome people of all diets.', '102', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('0e2ac07f-42a9-4f2c-a9d9-27aa28f38712', 'Society of Asian Scientists and Engineers', 'SASE is dedicated to the advancement of Asian heritage scientists and engineers in education and employment so that they can achieve their full career potential.', 'Are you looking for a community where you can make new friends, develop your professional skills, or embrace your interest in STEM? SASE may be the place for you! We offer an open environment for students to grow, learn, and have fun through themed general meetings, mentorship pairings, technical workshops, and conferences - we have something for everyone! - - - -SASE is dedicated to the advancement of Asian heritage scientists and engineers in education and employment so that they can achieve their full career potential. In addition to professional development, SASE also encourages members to contribute to the enhancement of the communities in which they live through community service. - - - -SASE’s mission is to: - -- Prepare Asian heritage scientists and engineers for success in the global business world - -- Celebrate diversity on campuses and in the workplace - -- Provide opportunities for members to make contributions to their local communities - - - -SASE membership is open to members of all genders, ethnic backgrounds, and majors. Please LIKE us on Facebook, follow us on Instagram, subscribe to our newsletter for the most up-to-date events! We''re also on Discord! Join here to hang out and play games with us!', '42', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('41d5cb73-0a49-47aa-a46f-fdec1e7c165d', 'Society of Hispanic Professional Engineers', 'SHPE promotes the development and retention of Hispanic students in engineering, science, and other technical professions to achieve educational excellence, provide service to the community, and preserve and enhance our cultural identity.', 'SHPE promotes the development and retention of Hispanic students in engineering, science, and other technical professions to achieve educational excellence, provide service to the community, and preserve and enhance our cultural identity. SHPE is dedicated to improving the overall academic, professional, and cultural experience of our Familia. Our Familia is open to anyone who believes in our mission. All of our seminars and workshops have always been open to anyone to attend. This way, we can emphasize how we strive to be beneficial to both the university and the community. It is our dream to continue the exponential growth of the organization and to graduate knowing we’ve made a difference for generations to come.', '279', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('c4679eed-a890-4b2f-a4fb-f714641f7d26', 'Society of Physics Students', 'The Society of Physics Students (SPS) is a professional association open to all undergraduate students interested in physics. Weekly meetings consist of co-op talks, professor talks, and more physics-related hijinks!', 'The Society of Physics Students (SPS) is a professional association open to all undergraduate students interested in physics. Weekly meetings consist of co-op talks, professor talks, and more physics-related hijinks! - - - -In the past, we''ve hosted workshops ranging from LaTeX to the physics GRE, and bonded over pumpkin carvings and bowling nights. We also run a mentorship program that connects new and seasoned physics students within the Northeastern Physics community. - - - -Our members are not uniquely physics majors: all who are interested in physics are welcome! Some members have majored in fields such as chemistry, computer science, engineering, geology, and mathematics. - - - -Join us on Wednesdays @ 12 PM in 206 Egan! - - - -Sign up for our email list here !', '858', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a413055d-725d-4a1f-a799-f13d1b7615dd', 'Society of Women Engineers', 'SWE is an organization that serves to empower all women pursuing a degree in engineering with professional and academic support. SWE''s core values are integrity, inclusive environment, mutual support, professional excellence, and trust.', 'Meetings are weekly on Wednesdays from 8 to 9pm. ', '229', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('ece0b104-b27e-4567-b436-ba81ead4ee9f', 'Sojourn Christian Collegiate Ministry NEU', 'Sojourn NEU is a Christian organization on-campus. Our welcoming community meets weekly to discuss life issues and its intersection with Christian faith. Questions are always encouraged! Our core values are community, justice & faith. Join us!', 'Sojourn NEU is a Christian organization on-campus. Our community meets as a small-group for college students to meet weekly to explore the Bible and Christian faith, as well as discuss current life issues. Questions are always welcomed and encouraged! Our leadership is also available for casual meetings throughout the week and spontaneous gatherings. Sojourn NEU operates as a faith-in-practice organization, encouraging and organizing activities in which students engage in our core values of community, justice, and faith. - - - -If you''re a student who''s struggling with big questions surrounding faith and life, you are not alone and you are invited to join us. We can''t promise to have all the answers, but we are committed to providing a welcoming space in which you are welcome to share your questions and sit alongside others who may have similar questions or doubts. - - - -Join us for the adventure; it''s going to be a great year!', '704', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('f089c406-46ee-46a2-a224-b858b2d494df', 'Solar Decathlon', 'The Solar Decathlon is an annual competition held by the DoE which promotes innovative and efficient building design. Open to graduate & undergraduates, NUSD aims to give students hands-on experience working between majors on a large-scale project.', 'Since 2002, the U.S. Department of Energy has hosted an annual collegiate competition that promotes sustainability, efficiency, and innovation in building design. The Solar Decathlon consists of two challenges: the Design Challenge, where students work to develop construction documentation which clearly depicts their novel ideas, and the Build Challenge, which allows students to see their designs come to fruition as they construct their project locally. Challenge submissions are evaluated based on their performance in ten distinct contests which can vary from year to year. - - - -The Solar Decathlon competition is being introduced again to Northeastern University because of the breadth of the ten contests; since submission performance is dependent on a multitude of variables which can vary from architectural design and energy efficiency to financial viability and innovation, this club offers students the opportunity to gain experience working between disciplines to design an optimized project. - -Open to both undergraduate and graduate students, the final goal of this club is to participate in the Solar Decathlon Competition Event that is hosted annually in Golden, Colorado. A group of students will get the opportunity to present the final design to a panel of industry leaders. The competition provides students the chance to showcase a holistic design as well as network with professionals in the industry. - -', '875', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('f9b68f87-356b-46bc-80b9-e61ebbe03358', 'Spark', 'Spark is a student-run contemporary art collective. Our mission is to connect people in Boston with creativity in all of its forms and encourage both artists and art appreciators to get involved! ', 'spark is a unique organization that is dedicated to sharing art with the greater community. We seek to expose students to the artistic world of Boston by hosting exhibitions featuring student-made artwork, museum tours, artist talks, and other events. Our club is composed of people who are passionate about art and are seeking real-world experience in marketing, budgeting, exhibition management, design, and other fields of art appreciation. We welcome students from all majors and skill levels! - -Spark is made up of an eboard containing roles that fall under: Exhibitions, Events, Finance, and Media. We typically assign roles based on quick applications and interviews that consider members'' preferences and skills. All are welcome at our meetings, and please reach out by email or socials with any questions. ', '684', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('779ab354-664d-4eeb-95a3-04e3d0f3a009', 'Spectrum Literary Arts Magazine', 'Spectrum Magazine is Northeastern University''s longest lasting literary arts magazine, amplifying the creative community since 1957. Our publications showcase the exceptional poetry, prose, photography, and artwork created by the Northeastern community.', 'Spectrum Magazine is Northeastern University''s longest lasting literary arts magazine, established in 1957. Publishing issues triannually and accepting submissions year-round. Our publications showcase the exceptional poetry, prose, photography, and artwork created by Northeastern students, staff, and alumni. As an organization, we help members develop their ability to effectively critique writing and design. Our primary goal is to amplify the creative voices of the community.', '45', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('7917b9dc-f46c-42a1-af2c-9205b9d6f712', 'Splash at Northeastern', 'The main purpose of this group is to implement a program that brings high school students onto campus to take free classes devised and taught by Northeastern students. The event is held once a semester.', 'The main purpose of this group is to implement a program that brings high school students onto campus to take free classes devised and taught by Northeastern students. Northeastern students have the freedom to create and teach classes on whatever subject area or hobby they would like. Local high schoolers then have the opportunity to select which classes they''d like to take. This program is also an opportunity for mentorship and for high schoolers to learn about college life and the application process. - -A few of the responsibilities of this group include: organizing potential teachers, reviewing classes, running event day-of, and gathering feedback from high schoolers on the classes.', '529', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('50bb2af0-205c-45d9-b845-7a1f513438f7', 'Spoon University - Northeastern', 'Spoon University is the everyday food resource for our generation, on a mission to make food make sense. On our site, you can find the simplest recipes, the most obvious hacks you can’t believe you didn’t know, and the best restaurants around campus.', 'Spoon University is the everyday food resource for our generation, on a mission to make food make sense. On our site, you can find the simplest recipes, the most obvious hacks you can’t believe you didn’t know, and the best restaurants around campus that you haven’t found yet. For many of us, this is the first time we’re navigating our campuses or our kitchens on our own, and Spoon University is here to simplify and celebrate that. Behind the scenes, we’re helping teach the next generation of journalists, marketers and event planners the best practices in digital media. We empower a network of over 3,000 contributors at 100+ college campuses to write, photograph, create videos and throw events. Our program (called “Secret Sauce”) offers skills and training on how to be a leader, create incredible events and have your photos, videos and articles seen by millions. Our contributors get personalized analytics on what’s working and what’s not working, so they can learn and grow and launch into the real world ahead of the curve. - -If you want to get involved, we accept members at the beginning of each semester! While we do not check Engage often, you can get in touch with us through our e-board''s contact information listed on the site & through messaging our Instagram at @spoon_northeastern!', '4', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('9a92a868-53c3-4d4c-a373-482ba666cd30', 'Sports Business & Innovation Network', 'Northeastern University''s premier organization lying at the intersection of sports, business, and technology.', 'Sports Business & Innovation Network strives to: - -- Educate the future leaders of our community - -- Connect with the industry professionals - -- Innovate towards the future of sports - -- Empower our peers to pursue opportunities - -Join our mailing list to learn about opportunities within the club! https://tr.ee/MzsoaurA0k', '692', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a54d633a-a48e-4a27-bd50-51fcb27b0bcb', 'STEMout', 'STEMout is a club for students who want to design or volunteer for outreach efforts in the Boston community. STEMout is a recognized Northeastern University student organization formed in 2016 with the help of the Center for STEM Education.', 'STEMout is a club for students who want to design or volunteer for outreach efforts in the Boston community. STEMout is a recognized Northeastern University student organization formed in 2016 with the help of the Center for STEM Education. STEMout’s mission is multifaceted: (1) to unite students who want to design or volunteer for outreach efforts in the Boston community with partner organizations; (2) to serve as a resource for student organizations and faculty members hoping to participate in or develop their own STEM outreach efforts and (3) to assist these individuals in obtaining funds for their STEM education efforts with the help of the Center for STEM Education.', '590', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('66c9f5db-5049-41bd-938c-76c398d00682', 'Stepping On Another Level', 'Stepping On Another Level (S.O.A.L.) is Northeastern University''s only performing arts step team. Step is a percussive form of dance with a long rich history rooted in African tradition. All are welcome and no experience is needed to tryout for the team!', 'Established in 2013, Stepping On Another Level (S.O.A.L.) is Northeastern University''s only performing arts step team. Step is a form of dance that has a long, rich history rooted in African dance tradition; the origins of step trace back to African tribal cultures, but more notably gumboot dancing. It is a percussive form of dance in which one’s body is used as an instrument to make sound. S.O.A.L. performs at various events both on and off campus, as well as participates in competitions throughout the northeast. We also give back to the community through teaching step workshops to K-12 students in Massachusetts. No experience required! Be sure to try out for the team at the beginning of Fall or Spring semester and keep up with us on Instagram and TikTok @soalstepteam !', '630', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6f95c8cc-4dd0-4c5a-ba5a-6e9be5edc631', 'Strong Women, Strong Girls', 'Strong Women Strong Girls at Northeastern University is a group of college women committed to supporting positive social change by working to create cycles of mutual empowerment for girls and women.Through mentoring relationships and after-school progr...', 'Strong Women Strong Girls at Northeastern University is a group of college mentors committed to supporting positive social change through our mentoring sessions with mentees in 3rd-5th grade in the Boston Public School System. Our mission is to empower the mentees to imagine a broader future through a curriculum grounded on strong role models delivered by college mentors. Together, we aim to foster a welcoming environment that promotes growth and a cycle of mutual empowerment. SWSG also strives to support the professional and personal growth of our college mentors. Our chapter is overflowing with leadership opportunities, amazing events, and great friendships.', '214', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('dbd36963-bece-4dfa-aa80-e39aa0959492', 'Student Activities Business Office (Campus Resource)', 'SABO is the financial institution for all student organizations. We are here to help with anything pertaining to a student organization''s finances. Office Hours: Monday to Friday 8:30am to 4:30pm.', 'The office is the financial institution for all student organizations. The staff is there to help with anything pertaining to a student organization''s finances. All student organizations are required to use the Student Activities Business Office for all money transactions. Office Hours: Monday to Friday 8:30am to 4:30pm.', '732', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('20be53d8-0d69-4311-9871-86c362315850', 'Student Affiliates of School Psychology', 'SASP is a graduate student organization open to all students enrolled in the school psychology program. SASP is affiliated with the national organization through Division 16 of the American Psychological Association. ', 'SASP is a graduate student organization open to all students enrolled in the school psychology program. SASP is affiliated with the national organization through Division 16 of the American Psychological Association. SASP is mainly focused on 1) building a student community, 2) advocating for strong training, 3) committing to social justice, 4) fostering collaboration with students and faculty.', '606', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6904b0a6-8b97-4982-a650-854f29b1d4bf', 'Student Affiliates of the American Chemical Society', 'The Northeastern University Student Affiliates of the American Chemical Society is open to all students who show an interest in chemistry and the related fields. Our Chapter meets weekly and frequently hosts speakers from various areas of chemistry. ', 'The Northeastern University Student Affiliates of the American Chemical Society is open to all students who show an interest in chemistry and the related fields. Our Chapter meets weekly and frequently hosts speakers from various areas of chemistry.', '1006', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6394b2cc-d9f1-4962-92d9-de4ec03019bf', 'Student Alliance for Prison Reform', 'SAPR at Northeastern serves as a platform for people to educate themselves and others about the injustices of the current incarceration system. We host speaker events, demonstrations, movie nights, and more. New members are always welcome to attend!', 'SAPR at Northeastern serves as a platform for people to educate themselves and others about the injustices of the current systems of incarceration. We work to educate each other on various prison related topics such as mass incarceration, school-to-prison pipelines, reproductive health in prisons, and other related topics. - - - -Our general body meetings are discussion and presentation based. Throughout the semester we work to provide engaging content and get others involved. We host a 7x9 Solitary Confinement demonstration every fall semester and Feminine Wellness Drive in the spring. Through weekly educational meetings, movie nights, speakers, and other special events, we work to keep college students informed about issues within the prison system. - - - -As a group, we are always welcome to suggestions and new ideas. We love to grow and look forward to expanding our presence on campus and the greater Boston community. Please reach out to us with any thoughts, comments, or suggestions at any time!', '788', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('ac0c0f04-560f-4952-8c9f-aec9437f3cca', 'Student Bar Association', 'The SBA represents the interests of the entire NUSL student body through effective and dedicated student representation. ', 'The SBA endeavors to advocate on behalf of the students at NUSL to the administration, work with NUSL administration to respond to student concerns and grievances, foster a more unified community through student-centered programming, serve as a resource for student organizations, and work with NUSL administration to facilitate the equitable distribution of available resources to recognized student organizations in the Law School. ', '639', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('c32a2f53-3ea0-4999-a40e-5ea4cd33f275', 'Student Conduct Board (Campus Resource)', 'The Student Conduct Board hears cases involving undergraduate, graduate, Law, and Professional students who have allegedly violated the Code of Student Conduct.', 'The Student Conduct Board hears cases involving undergraduate, graduate, Law, and Professional students who have allegedly violated the Code of Student Conduct. Hearings typically take place Monday through Thursday during the evenings and occasionally during business hours. A hearing administrator serves as a procedural advisor to the board while the student members hear the case, deliberate on alleged violations, and render sanctions, if applicable. Students who are interested in participating on the Student Conduct Board do not need prior experience. All majors, all levels (graduate, undergraduate, Law and Professional students), and both domestic and international students are welcome!', '631', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('44f64434-e4b9-498c-9d83-df00b8f9ca1a', 'Student Garden Club', 'Pending', '', '698', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('f8b4b862-4838-4b1b-a56d-46b2ddfe6b6b', 'Student Government Association', 'The Student Government Association serves as the voice of the undergraduate student body and exists to enhance your Northeastern Experience.', 'The Student Government Association serves as the voice of the undergraduate student body and exists to enhance your Northeastern Experience. We strive to promote student interests within the University and its surrounding communities in order to enrich education, student life, and the overall Northeastern experience. The Student Government Association is comprised of the Student Senate, many committees covering the diverse student experience, the Finance Board, and the Student Involvement Board. - -Follow us on Instagram at @northeasternsga, @sgacampuslife, and @sgastudentlife', '355', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('1bf9572d-5135-48fc-bf03-c63ade9a08c9', 'Student National Pharmaceutical Association', 'SNPhA is an educational service association of pharmacy students who are concerned about the profession of pharmacy, healthcare issues, and the poor minority representation in these areas. We aim to share knowledge and skills to serve the underserved.', 'SNPhA is an educational service association of pharmacy students who are concerned about the profession of pharmacy, healthcare issues, and the poor minority representation in these areas. The purpose of SNPhA is to plan, organize, coordinate, and execute programs geared toward the improvement of the health, educational, and social environment of minority communities, thereby serving the underserved. - -The best way to stay updated is to check out our Instagram @nuspha.', '414', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('f36f7749-6407-4c01-9c20-139da076e3ef', 'Student Nurse Anesthetist Association', 'The mission of the Student Nurse Anesthetist Association (SNAA) is to promote wellness and provide support, networking opportunities, and resources to all cohorts of Student Registered Nurse Anesthetists (SRNAs) at Northeastern. This organization aims ...', 'The mission of the Student Nurse Anesthetist Association (SNAA) is to promote wellness and provide support, networking opportunities, and resources to all cohorts of Student Registered Nurse Anesthetists (SRNAs) at Northeastern. This organization aims to utilize student activities to promote communication through the various cohorts.', '721', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('de2198c0-6c17-4cbf-90b1-7db066ad7a50', 'Student Organ Donation Advocates at Northeastern', 'Soda Northeastern aims to help save lives by educating others on the critical need for organ and tissue donation and increasing donor registration within the Northeastern community. ', 'Soda Northeastern aims to help save lives by educating others on the critical need for organ and tissue donation and increasing donor registration within the Northeastern community. ', '834', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('14608934-47da-4ae0-a8cd-f7f06b17bb06', 'Student Value Fund', 'The Student Value Fund is Northeastern University’s premier investments-focused organization. We strive to embody Northeastern’s values of experiential learning through the application of theory into practice. ', 'The Student Value Fund is Northeastern University’s premier investments-focused organization. We strive to embody Northeastern’s values of experiential learning through the application of theory into practice. - -As a value-oriented fund, SVF strives to identify long-only investment opportunities that we perceive to be undervalued relative to our analysis of intrinsic value, with the objective of investing in equities that allow the fund to generate higher absolute returns than the S&P 500 (SPY). Additionally, as a student-run organization managing a portion of the university’s endowment, the fund aims to embody Northeastern’s values of experiential learning by helping students apply value investing theory to real-world investing.', '310', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('3af16bab-c64c-42db-bc15-3df7cdb01d48', 'Student Veterans Organization', 'Our mission is to develop and foster a community for veterans, dependents, military, and supporters to ensure their academic, personal, and professional success. Check out our webpage and social media for more of the latest news: northeastern.edu/svo', 'Our mission is to serve as advocates for the student veterans and service member students that attend Northeastern University by providing essential information and guidance that aid in student success, personal growth, and enduring bonds that will last a lifetime. - -Check out our website at northeastern.edu/SVO and like us on Facebook @ https://www.facebook.com/NUStudentVets/ for the latest news, events, and initiatives!', '703', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6c849c81-c198-4412-97fd-1347a00507eb', 'Students Demand Action at NEU ', 'Students Demand Action at NEU works to combat gun violence by advocating for common-sense gun laws, endorsing gun-sense candidates, registering voters, educating the community on gun violence-related issues, and uplifting survivor voices. ', 'Students Demand Action (SDA) at NEU is one of SDA''s 700+ chapters across the country working to end gun violence by advocating for common sense gun laws on local, state, and federal levels, endorsing gun sense political candidates, registering voters, educating the community on gun violence related issues, and uplifting survivor voices. SDA is part of the Everytown for Gun Safety and Mom Demand Action network, which has over 10 million supporters across the country. ', '276', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('2ee5504a-05db-41bf-837f-38fee6f5fc32', 'Students for Justice in Palestine', 'Northeastern University Students for Justice in Palestine will work to raise awareness about the plight of Palestinians in the West Bank and Gaza. We are dedicated to the struggle for Palestinian self-determination, an end to the illegal Israeli occup...', 'Northeastern University Students for Justice in Palestine will work to raise awareness about the plight of Palestinians in the West Bank and Gaza. We are dedicated to the struggle for Palestinian self-determination, an end to the illegal Israeli occupation of the West Bank, East Jerusalem, and Gaza, and for the right of the Palestinian refugees to return to their homeland. Our mission as students is to promote the cause of justice and speak out against oppression and occupation. We will raise awareness about this issue and provide students with alternative resources of information than the mainstream media. We will also work to provide a comfortable environment where students and faculty can discuss and debate their diverse views on the various aspects of Palestinian politics and society. We do not support violence in the region and will highlight the Palestinian''s non-violent efforts for peace. We envision that one day Palestinians will be free from occupation and will be able to determine their own fate as an independent nation living peacefully with its neighbors. We oppose all forms of racism, discrimination, and oppression', '473', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('677d47cb-c9dd-4f84-90b9-9f562cdd6e49', 'Students for the Exploration and Development of Space of Northeastern University', 'Our mission is to develop the network, skills, and opportunities of a diverse team of students interested in space, science, and astronomy by supporting competition based projects and providing casual events for those with busier schedules.', 'At SEDS our mission is to give our members the opportunity to compete in prestigious academic competitions, become published, and learn more about space. Our teams get hands-on experience in our club workshop with 3D printers, hand tools, and electrical equipment. We host stargazing events and discussions where our members talk about their co-ops from aerospace companies and teach others about technical news and aerospace topics. At SEDS it is a priority to promote diversity in space-related fields and make space approachable for everyone. Our club goals as listed in our constitution are listed here: - -Section 1: To enable students to participate in research competitions that will make meaningful contributions to the fields of space exploration, science, and policy for the purpose of growing Northeastern''s SEDS. - -Section 2: To create an organization that encourages the participation of students from all identities, backgrounds, and majors within the Northeastern community. - -Section 3: To develop a community of students researchers to facilitate the exchange of expertise and ideas, and provide support to student research teams. - -Section 4: To create a platform in which undergraduates can participate in space-related fields by creating networking opportunities with relevant organizations. - -Videos: - -Summer Involvement Fair Info Presentation: - -https://youtu.be/dWZhef9J_7U', '735', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('f9027a96-bb13-464e-9d06-1fe6cfbe330f', 'Students to Seniors', 'Students to Seniors believes that social interaction between students and the elderly is valuable to both generations, as members can learn from the experience of their elders while the aging population benefits from an opportunity to engage and connec...', 'Students to Seniors believes that social interaction between students and the elderly is valuable to both generations, as members can learn from the experience of their elders while the aging population benefits from an opportunity to engage and connect with others. Originally founded by a neuroscience-focused student, the idea of Students to Seniors was based upon a growing body of research suggesting that a lack of total environmental enrichment can lead to neurodegeneration. Despite the sustained efforts of leading researchers around the world, no current cure or treatment exists for Alzheimer’s Disease or any other forms of dementia. Thus, our best bet to decrease the burden of neurodegeneration and its other effects on mental health in our senior population is by capitalizing on preventative mechanisms, such as environmental enrichment. Students to Seniors will accomplish these goals by bringing mentally stimulating activities and social interaction to various populations of the elderly at least once a month. In order to ensure that the organization, above all, does no harm, there will be a mandatory training session for all volunteers before their first volunteer outing. The training sessions will occur in place of a general body meeting, and will include a presentation and discussion on geriatric health. Students to Seniors will furthermore keep in mind the pervasive presence of health inequities, and it will be an interrelated focus of Students to Seniors to ensure that served and underserved populations are addressed equally and with great care. Lastly, this organization will include a learning component by hosting a speaker once a semester related to neurodegenerative disease.', '730', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('14d0411c-9378-48ef-a00d-54066fbc91d2', 'Studio Art Club', 'Interested in art? Come join NU Studio Art Club! Our main goal is to provide a fun space for students to learn about and experiment with art, and to make some new friends along the way. Self-proclaimed "non-artists" are especially welcome!', 'Interested in art? This club is for you! Whether or not you have previous art experience or skill we hope create a fun space for students are to try new things and improve their existing skills. Since art can be both relaxing and a stress reliever, we wish to bring both a little fun and a little calm to the hectic daily life of a student. Come here to relax, explore the different mediums, get to know people, and create something cool. We will have a wide-range of activities involving many different mediums such as painting, drawing, embroidery, sculpting and many more. Everyone is welcome, no art skill needed!', '1015', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('74b62790-2afa-4a94-91cc-9c83a69788ba', 'Sunrise Northeastern', 'Sunrise NEU is Northeastern''s hub of the Sunrise Movement, a national youth-led climate justice organization. We work towards climate justice within our institution and beyond through research, education, and organizing with other clubs and communities.', 'Sunrise NEU is Northeastern''s hub of the Sunrise Movement, a national youth-led climate justice organization. We work towards climate justice within our institution and surrounding communities through multiple facets, including research (primarily focused on developing a Green New Deal for Northeastern) education (providing a welcoming space for new members to learn about climate justice and get involved), and organizing with other social-justice clubs and communities (such as collaborating with the Social Justice Resource Center, being part of Huskies Organizing With Labor (HOWL), Supporting YDSA, PSA, and supporting Northeastern Divestment, a campaign fighting for fossil fuel divestment at the university.) We are striving to make Northeastern a more just place that prioritizes its environment and communities.', '946', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('39a691e4-7e51-4374-829f-68eebfa68eb1', 'Super Smash Bros Club', 'Fosters a friendly community for competition in games in the Super Smash Bros Franchise', 'Hello! - -We are the smash bros club, we hold Smash Ultimate tournaments every Friday, and Smash Melee tournaments every Monday. Join the discord servers below for communications. - -Ultimate - -Melee', '392', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b1e9d303-753f-4f06-a22b-7a4a9f7f3dd4', 'Surf Club', 'Surf Club is a fun way to meet new friends, explore the beaches of New England, and advocate for nature preservation, all while catching waves!', 'One thing that many surfers can agree on is that surfing is highly addicting, stress relieving, and physically rewarding to participate in. Unfortunately, many people do not have the money to buy surf gear, or they have never tried it because they didn''t have someone to go with. Our plan is to make new surfers'' experience as easy as possible to increase the total population of surfers here on the Northeastern Campus as a whole. As a surf club member, you will have the opportunity to join other students on trips to beaches all around New England. If you have never surfed before, we will gladly teach you, and if you are a seasoned veteran you will have the opportunity to surf with new and different people. As frequent beach-goers, members of the Surf Club will dedicate a portion of their time to help preserve the New England coastline, whether it be trash pickups, fundraisers, or raising awareness to Northeastern Students. Along with all of the surfing that we will be doing, Surf Club also engages in other fun activities, such as pizza parties and surf movie nights! - - - -Join our Slack channel to get involved: - -https://join.slack.com/t/nusurf/shared_invite/zt-10r3a4f9g-XfenbaKDGIqRvllHoX06qQ', '322', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('97423ea7-a1d9-4fe0-aa5d-b996ffce0b94', 'Survivor: Northeastern', 'Survivor: Northeastern brings together students of all ages, majors, and backgrounds to compete in a semester-long competition, in replica of CBS’s reality series, Survivor. Members may join as a player or as member of the production team.', 'Modeled after the reality television series, Survivor, our organization strives to create similar experiences lived out by contestants on the show without the survival aspects of living on a remote island. Survivor: Northeastern puts together one season per semester, consisting of 16-24 students, who compete for the title of Sole Survivor. They participate in challenges, both mental and physical, experience tribal councils, and test their abilities in social psychology, all while making life-long friends. - -https://www.youtube.com/watch?v=KfbyEAurZvA - -Our seasons are filmed by a camera crew and uploaded to YouTube after several hours of editing and story-boarding. We look to recruit students who have a competitive nature and demonstrate enthusiasm. Students of all ages, majors, and backgrounds are encouraged to apply and submit a video describing their interest in the show. Those who are not cast are encouraged to participate in our club via production or outside events, like viewing events for the CBS Survivor, outings with the organization, and attending challenges or tribal councils. - -The game starts in tribes, where students compete for tribal immunity. The losing tribe must vote out a member of their tribe. When the game has reached about the halfway point, the tribes merge. The contestants then compete for individual immunity and continue to vote each other out. The voted out contestants after the merge become members of the jury, and ultimately vote on the season’s winner when there are two or three contestants left. Not only do we live out the game, but we foster friendships and a communal space centered around a common love for the show. - -Please visit our social media outlets, YouTube page, and website below to learn more about the club!', '259', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('0ee7b98c-3fd7-41cb-90e9-fc152fa85f0e', 'Sustainable Transportation @ Northeastern ', 'Sustainable Transportation @ Northeastern serves to give students a chance to explore how transportation shapes their lives, engage with local government and engineering firms, and encourage and advocate for sustainable transportation.', 'Welcome to Sustainable Transportation @ Northeastern, a sort of supergroup consisting of our university’s chapters of the Institute of Transportation Engineers (ITE), Women in Transportation Seminar (WTS), and our newly minted Bike Enthusiasts @ Northeastern. (BEAN) This group focuses on a variety of transportation issues across the globe. We host speakers from a variety of transportation related industries, run bike tours, advocate for bike infrastructure on campus, and help students network with professionals in the industry. The goal of this club is to help students learn more about sustainable transportation both on campus and around Boston while advocating for change in the community. - -Join our email list: http://eepurl.com/hqvuj5 - -Our full calendar is here: https://calendar.google.com/calendar/u/0?cid=bmV1Lml0ZUBnbWFpbC5jb20', '103', 'TRUE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('0bc25f73-28b0-406a-b552-0f8347fab526', 'Suzanne B. Greenberg Physician Assistant Student Society of Northeastern University', 'This society was created to guide PA students in the pursuit of integrity, professionalism, and excellence as future certified Physician Assistants and healthcare practitioners.', 'This society was created to guide PA students in the pursuit of integrity, professionalism, and excellence as future certified Physician Assistants and healthcare practitioners.', '245', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('38556509-32f0-43bd-8fb2-dac20e63f352', 'Systematic Alpha', 'Systematic Alpha is a interdisciplinary quantitative finance club that combines elements of Data Science, Finance, and Math', 'Welcome to Systematic Alpha, a vibrant interdisciplinary quantitative finance club that brings together enthusiasts from the worlds of Data Science, Finance, and Math. At Systematic Alpha, we explore the fascinating intersection of these fields to develop cutting-edge strategies and tools for understanding and navigating the complexities of financial markets. Whether you''re a seasoned professional or just starting out, our club offers a welcoming space to learn, collaborate, and grow together, building a community where curiosity and innovation thrive.', '963', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('c323cd8e-262b-44f2-9d78-2f8d73e495bc', 'Taiwanese American Student Association', 'Taiwanese American Student Association provides students who wish to stay connected with their Taiwanese and American roots with a welcoming platform and an inclusive environment for those interested in learning more about both cultures.', 'The Taiwanese American Student Association is a vibrant community that warmly embraces students seeking to explore and celebrate their Taiwanese and American heritage. We offer a welcoming platform where individuals can connect, learn, and grow together in a culturally diverse environment. Whether you''re looking to share your experiences, engage in cultural activities, or simply curious about Taiwanese American culture, our club provides an inclusive space for all to come together and foster meaningful connections.', '279', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('ef665c32-d232-4d72-9ac5-9d0f3c1fff15', 'TAMID Group at Northeastern University', 'TAMID is a national organization that prepares students to work with startups and exposes them to disciplines such as entrepreneurship, consulting, finance, and software development through the lens of the Israeli startup ecosystem.', 'TAMID is a national organization that prepares students to work with startups and exposes them to disciplines such as entrepreneurship, consulting, and finance through the lens of the Israeli startup ecosystem. This is done through our pro bono consulting program where we consult for top startups coming out of Tel-Aviv and a national stock pitch competition to decide which companies to add to our stock portfolio. We also provide an exclusive summer internship program in Israel. - -Fill out our interest form here to receive updates on the Spring 2024 recruitment process!', '103', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d65ed509-2e34-43a2-9e4a-8e45cafed47a', 'Tastemakers Magazine', 'Are you interested in music? Do you love going to shows, keeping up with the local scene, and discussing the latest releases with your friends? Do you have an interest in writing, photography, promotions, or design? ', 'Are you interested in music? Do you love going to shows, keeping up with the local scene, and discussing the latest releases with your friends? Do you have an interest in writing, photography, promotions, or design? If you answered yes to any or all of these questions: look no further. - - - -Here at Tastemakers Magazine, we publish 4 print magazines and year-round content, throw 2 concerts, and host meetings and events to discuss our love of music and beyond. We create professional experiences for our members to build their portfolios and resumes, while they make lifelong memories and friends (concert buddies!). - - - -We are committed to fostering a community where everyone is encouraged to enjoy Smash Mouth (or any artist) unapologetically. We welcome people interested in music of all genres and from all walks of life. - -If you want to learn more, sign up to hear from us and check out the discussion section below. ', '159', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('0322b744-d156-4c68-b7c7-0d989cf044b4', 'TEDxNortheasternU', 'TEDxNortheasternU is an independently organized TEDx event that showcases ideas worth spreading from the Northeastern University community. Speakers share their experiences, insights, and unique perspectives on a variety of topics in TED-style talks.', 'TEDxNortheasternU is a student-run organization that brings together the Northeastern community to share and discuss innovative ideas, breakthrough technologies, and groundbreaking research. Our events feature local speakers who are leaders in their fields, sharing their knowledge and experience in a series of engaging and thought-provoking talks. Through our events, we aim to inspire and educate our audience, while fostering a sense of community and collaboration among attendees. Join us at our next event to be a part of the conversation and discover new ways of thinking about the world around us.', '791', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a7468ec9-9f42-4056-b865-83478c407e10', 'Thai Society of Northeastern University', ' Thai Society aims to promote Thai culture to the Northeastern Community. We also aspire to bring together to community of Thai and Thai Americans on the campus.', 'Thai club at Northeastern aims to increase the students'' morale across the Boston campus. ', '417', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('80f3057e-c34f-44eb-b552-94b465fc668c', 'The American Red Cross of Northeastern University', 'The American Red Cross, a humanitarian organization, led by volunteers, and guided by its Congressional Charter and the fundamental principles of the International Red Cross movement will provide relief to victims of disaster and help people prevent...', 'The American Red Cross, a humanitarian organization, led by volunteers, and guided by its Congressional Charter and the fundamental principles of the International Red Cross movement will provide relief to victims of disaster and help people prevent, prepare for, and respond to emergencies. - - - -The Red Cross Club at Northeastern works to uphold the principles of the American Red Cross and the Global Red Cross Network. We pursue this through fundraising for disaster relief and specific initiatives, volunteering in the Boston community, organizing blood drives, providing opportunities for CPR and first-aid trainings, and more. Join us if you want to contribute to this movement and help promote public health! - - - -Join our weekly mailing list and check out our social media to stay up to date! - - - -Visit our website to find out more information about Northeastern''s Chapter of the American Red Cross.', '977', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('10f73175-d7a7-4d61-802c-a0cf118e11f9', 'The Avenue Magazine', 'The Avenue Magazine is Northeastern''s first and only fashion, lifestyle, and culture magazine. We strive to create a space where creative voices can be uplifted and heard. We pride ourselves in our team diversity, creative risk taking, and our magazine.', 'The Avenue Magazine is Northeastern University''s first and only fashion and culture magazine. Through our work, we strive to create a publication inclusive to all people and ideas, which offers Northeastern writers and creatives a platform to share their views and express their creativity. Every aspect of our publication is student created: from photography, to design, writing, production, illustration and post-production marketing. - - - -Follow us on Instagram to stay updated: @theavenuemag. General meetings are Thursdays at 7:00 P.M. EST', '951', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5b83a09b-9f49-46b6-b4d1-0ee7bfd73519', 'The Business and Innovative Technologies Club', 'The B.I.T. Club strives to expose its members to the historical, present, and future potential impacts that innovative information systems and technologies have on business, and associated industries.', 'The B.I.T. Club strives to expose its members to the historical, present, and future potential impacts that innovative information systems and technologies have on business, and associated industries. The club will explore the ongoing MIS-based innovations and technologies that drive companies to grow and become more profitable. By promoting the exploration, discussion and understanding of these technologies and demonstrating the positive effects they can have on organizations, the B.I.T. club seeks to inspire its members to drive innovation and positive change in their academic and professional careers', '450', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6b11ea3c-193c-44ce-b027-c544ab2d332e', 'The Data Science Hub at Northeastern', 'The Data Science Hub is a community for graduate students to share knowledge, do data science, and network together.', 'The Data Science Hub is a community for graduate students to share knowledge, do data science, and network together. The hub upholds three tenets: a source for academic content where we share data science skills and knowledge; a venue where we collaborate on data science projects, with emphasis on those that will benefit the Northeastern community; and a place where we can network with our peers in the university and outside, including the industry. - -CLUB LEADERSHIPS: - -PresidentParas Varshney - - - -TreasurerAby Binu - -Scheduling CoordinatorSoham Shinde - -Advisor NameCailyn Kelley - -Organization Emailnudatasciencehub@gmail.com - -', '316', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a6859bce-7332-41ed-bdcd-53dadc477105', 'The Downbeats', 'Founded in 2000, we are a competitive, co-ed a cappella group from Northeastern University, devoted to spreading our melodic and in-house-only musical arrangements to all. We’re dedicated to making music not only as friends but as a family too.', 'Founded in 2000, we are a competitive, co-ed a cappella group from Northeastern University, devoted to spreading our melodic and in-house-only musical arrangements to all. Through the tight-knit bonds we form with each other in and out of rehearsal, we’re dedicated to making music not only as friends but as a family too. Our main goal is to push our boundaries and define our unique sound. - - - -Throughout our time as a group, we’ve recorded lots of music. Our first recordings were our two full length albums - “Ignite” and “Venus," - which can be found on all major streaming platforms. In 2022, we released a single, "Your Guardian Angel" from our 2019 ICCA set. In 2023, we released an EP titled "Reflections" which included three songs - "Calvin''s Joint" "Shrike" and "Vertigo"- the last which was featured on Best of College A Cappella 2024. In 2023, we also released two singles - "Over the Ocean Call" and "It Gets Dark." You can find these anywhere you stream your music. - - - -We have also competed and performed all over the state of Massachusetts and New England. In the 2019 ICCAs, we had the pleasure of winning 1st Place in our Quarterfinals, and being awarded the titles of “Outstanding Soloist” and “Outstanding Arrangement.” - - - -Each Downbeat brings their own individual skills and talents to the group, coming together to form one diverse group that learns and grows from one another. We welcome music lovers and makers of all kinds to join our family, whether you are a trained singer or a timid belter. The Downbeats combine new talent with the knowledge gained from past members to create the blend of sound that is so characteristic of our group. - - - -Check out our website for more info about us!', '776', 'TRUE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('f8daab1c-4abf-4f66-a009-1011dae27009', 'The END Initiative at Northeastern University', 'The End Neglected Diseases Initiative fights to end neglected tropical diseases through fundraising, raising awareness, and advocating on campus. Our initiative supports Deworm the World, a campaign run by the non-profit organization Evidence Action', 'The END (End Neglected Diseases) Initiative is a campaign fighting to end neglected tropical diseases (NTDs). Our initiative supports Deworm the World, a campaign run by the non-profit organization Evidence Action. These diseases affect 1 in 7 people worldwide and have been cited as the #1 cause of inescapable poverty in the world. Our student organization aims to increase awareness on Northeastern''s campus, raise donations, and encourage world leaders to make the elimination of these diseases an important part of their policy agendas. The END Initiative of Northeastern University also works closely with Northeastern''s Integrated Initiative for Global Health.', '905', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('44163133-59bd-41aa-893f-bb792b1f2b0e', 'The Fashion Society', 'We work to educate and promote fashion across all aspects - art, culture, entertainment, and business. Our mission is to be the link between Northeastern''s campus and the Boston fashion industry through proactive event planning, networking, and media r...', '*Follow our Instagram: @northeasternfashion to get the latest updates on meetings!* - -We work to educate and promote fashion across all aspects - art, culture, entertainment, and business. Our mission is to be the link between Northeastern''s campus and the Boston fashion industry through proactive event planning, networking, and media relations. We look forward to a productive semester and look forward to working with all of you.', '393', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('fbe40b84-17e2-450f-9f81-af65bd8ff40a', 'The Francophone Club of Northeastern University', 'The Francophone Club welcomes anyone interested in the French language and/or culture. By no means, do you have to be French or be fluent in French. By joining, you will have many opportunities to converse in French with other members of the club.', 'The Francophone Club welcomes anyone interested in the French language and/or Francophone cultures. By no means do you have to be French or be fluent in the language. By joining, you will have many opportunities to converse in French with other members of the club and learn more about Francophone cultures through various events such as: movie night, our intercollegiate mixer, guest speakers, social nights, and more. Follow our Instagram (@nu.francophone) and join our mailing list (nufrancophone@gmail.com) to stay up to date with all our upcoming events. À bientôt!', '806', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('3b5c3a36-c7ad-4b4b-a86d-dc29338360a1', 'The Interdisciplinary Women''s Council', 'The Interdisciplinary Women''s Collaborative is the university''s first trilateral student organization dedicated to promoting and sustaining gender equality at Northeastern.', 'The Northeastern University Interdisciplinary Women’s Collaborative, or the IWC for short, is the first body on the Northeastern campus that seeks to bring together women and women’s organizations on campus to facilitate the communication and promotion of women’s empowerment initiatives and events on campus. The organization, at its core, is a means for individuals and clubs on campus to be exposed to the resources, the knowledge, the events, and the practices that have helped propel some of the campus’s largest women’s organizations to the success we see from them today. Too often, the biggest barrier to female empowerment is the lack of communication between women and this council wants to change that. We believe that every organization on campus that has shown their commitment to gender equality should have the ability to know how to succeed as a club at Northeastern and the best way to do that is to learn from clubs that have already done it. The council will be the primary body from which the university hosts campus-wide, interdisciplinary women’s events such as an annual International Women’s Day Celebration. - -The organization itself is split into three pillars: the interdisciplinary women''s organization collective (IWOC), which works to connect the existing women''s organization at Northeastern with the goal of promoting collaboration, the Women''s Research Engagement Network (WREN), the nation''s first research network made to facilitate female mentorship in all fields of research, and the Northeastern Women''s Council, which is a student-led council of over 300+ women working on women''s rights advocacy and empowerment.', '177', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('7da7aec0-2ed8-4868-9abd-61a325deba3d', 'The Interrobang Poets', 'The Interrobang Poets forms the basis of the slam poetry community on Northeastern’s campus, and we offer various events for anyone either new to or familiar with slam and spoken-word poetry, including workshops, open mics, poetry readings, and more!', 'Our organization serves to support the slam poetry community on Northeastern’s campus and their efforts to develop an on-campus poetry community that engages with the slam poetry communities of other universities. We also support and are involved in the youth/adult slam poetry communities in the Greater Boston area. We see poetry as a vessel for community building and, as such, long to create an environment where people feel safe enough to share their stories; thus we are actively against any and all forms of oppression. People will be confronted if their material actively causes harm to someone, there is a zero tolerance policy when it comes to oppressive poems and will not tolerate hate-speech or the cooptation of stories in order to create a safe(r) environment for all.', '148', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('11a8a973-4748-4145-b55d-fa026f229baf', 'The National Society of Black Women in Medicine', 'NSBWM is a multi-disciplined national organization that promotes the recruitment and retention of Black - -women pursuing broad careers in medicine, while promoting the advancement of those already established in these fields through unity and mentorship.', 'The National Society of Black Women in Medicine (NSBWM) is a vibrant and inclusive national organization dedicated to supporting and uplifting Black women in the medical field. Our mission is to foster a community that champions the recruitment and retention of Black women pursuing diverse careers in medicine, while also empowering and advancing those who are already established in these fields through the values of unity and mentorship. Join us in celebrating diversity, promoting excellence, and creating opportunities for growth and success in the medical profession!', '975', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('0475dc1a-b655-4bd4-8a2f-2d5f32c1f1c8', 'The Northeastern Debate Society', 'The Northeastern Debate Society is a intercollegiate competitive debate team. We hold two practices a week on Mondays and Wednesdays at 8:00 in Hastings 204, and compete at tournaments across the country every weekend.', 'The Northeastern Debate Society is an intercollegiate competitive debate team. We practice American Parliamentary (APDA) and British Parliamentary (BP) debate. Joining NUDS is a great way to develop your public speaking and critical thinking skills, learn about a wide variety of topics, and have fun doing it! No experience necessary! - -We host two optional meetings weekly, on Monday and Wednesday at 8pm. You can sign up for our mailing list to receive more information here. - - ', '288', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('12d31094-7048-48a1-ac43-dcfe227e9063', 'The Ortelian Society', 'The Ortelian Society is Northeastern’s premier undergraduate society dedicated to Classical and heterodox thought.', '"Alles, was tief ist, liebt die Maske.” - Friedrich Nietzsche, Beyond Good and Evil - - - -The Ortelian Society is Northeastern’s premier undergraduate society dedicated to Classical and heterodox thought. - - - - - - - - - - - -The OS devotes itself to the investigation of the heterodox ideas underexplored or altogether ignored by the wider liberal arts programs (including both the sciences and humanities; Darwin and climate change deserve as much opposition as the progressive orthodoxy underlying the humanities). Our aim is to cultivate genuinely independent thinkers who will grow into virtuous leaders. - - - - - - - -', '108', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('262d8b3a-4472-45e0-bffb-e8e29ad5801c', 'The Red & Black', 'The Red & Black is a sports magazine published once a semester that offers an inside look at Northeastern Athletics through feature writing and podcasting, long-form reporting, photography, design, and social media. ', 'Watch our General Interest Meeting here: https://www.youtube.com/watch?v=9ceCwyYggVw - - - -The Red & Black is Northeastern University’s only student-run athletics magazine. Released semesterly, the writing, photography, design and social media are all handled exclusively by Northeastern students. Check out our current staff here! - -The Red & Black is particularly focused on student-athlete involvement. Modeled around The Players’ Tribune and Sports Illustrated, there are numerous First Person Stories from the student-athletes of Northeastern detailing their experiences. In addition, several student-athletes hold leadership positions within the magazine, ensuring a commitment to high quality coverage of all athletic programs on campus. With an ever-growing partnership with Northeastern Athletics – which includes presenting the annual Red & Black Dedication Award at the athletic department’s year-end banquet – The Red & Black represents a key part of the athletics culture at Northeastern University. - -To learn more, visit our website at www.nuredandblack.com, or watch our appearance on the NESN TV Show, "Tales of the Howlin'' Huskies," here: https://www.youtube.com/watch?v=_EYTh2leTn8 ', '179', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d7a40f48-d5d8-4434-8742-b0c0e8ad3874', 'The Student Osteopathic Medical Association', 'The purpose of the Student Osteopathic Medical Association, the student affiliate organization of the American Osteopathic Association, is to promote osteopathic ideals and unity within the profession and to educate future physicians.', 'The purpose of the Student Osteopathic Medical Association, the student affiliate organization of the American Osteopathic Association, is to promote osteopathic ideals, to educate pre-medical students on their options to becoming a physician, and to establish and to maintain lines of communication among healthcare professionals in an ongoing effort to improve the quality of healthcare.', '977', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('9b08ec71-d139-46b6-84d8-9fc28f95e27a', 'The Sustainable Innovation Network', 'Empowering students to spark change through for-profit, for-impact startups that make less "SIN" in the world. ', 'Our mission is to foster collaboration across disciplines for undergraduates passionate about social innovation. Through our framework of "entrepreneurship is for everyone", we aim to recognize social injustices, find helpful solutions, and build with the intention of having lasting, but profitable, impact. ', '346', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('3d770795-5778-4737-bf84-0d6e93b37c98', 'The Undergraduate Research Club', 'The URC is committed to engaging undergraduate students in innovative, experientially-driven, world changing research by instilling knowledge, advancing skills, and providing opportunities that inspire the next generation of leaders.', 'The Undergraduate Research Club (URC) is a vibrant community dedicated to involving undergraduate students in groundbreaking research initiatives that make a global impact. Our mission is to empower students by cultivating their understanding, honing their abilities, and presenting avenues for growth that ignite the trailblazers of tomorrow. At URC, we encourage curiosity, foster collaboration, and provide a supportive environment where students can explore their passions, develop critical skills, and contribute meaningfully to the realm of research. Join us in the pursuit of knowledge, innovation, and change-making endeavors that shape the future.', '921', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('615d2adf-d941-46cd-9dbb-f0974c58afc6', 'Theme Park Engineering Club', 'The Theme Park Engineering Club works to give students an opportunity to explore the field of engineering through theme parks and to bring entertainment to the Northeastern campus.', 'Northeastern''s Theme Park Engineering Club is an organization for those interested in designing theme park attractions, combining their appreciation for both arts and sciences, or simply just love riding roller coasters! Here we''ll be looking into and learning about the science and illusions used to create many of the world''s most popular theme park rides, as well as working on many projects of our own including in-meeting and national level competitions!', '901', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('2bfb95c9-0a6f-46f1-939d-ca44130dd21f', 'Times New Roman', 'You think you''re funny, huh? You want to perform stand up comedy? You want to write silly tweets? You want a group of people there to listen to your standup and silly tweets? Well then TNR is the club for you!', 'Times New Roman is Northeastern''s standup comedy club, providing laughs through shows in AfterHours and Open-mics in campus classrooms. Our standup shows feature performers ranging from standup veterans to novices, with all able to learn and improve in a friendly, funny environment! Additionally, we post topical content on our blog, Twitter, and Instagram, and make a fun podcast too. Join our weekly meetings or come by a show to get started! - -Check out our website to see all of our content as well as the efforts of wix to get you to spend money: nutnr.com ', '93', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d7064dae-6ad0-4bfe-a9d1-de94e2616f94', 'Transfer Student Organization', 'Come meet other transfer students and learn about Boston and Northeastern!', 'The purpose of NUTS is to create a welcoming and supportive community for transfer students by holding events where they can socialize, get involved in the Northeastern community, and learn more about Boston and the university.', '347', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a9ea79fc-19ef-4c10-aacf-01331cb49a60', 'Trash2Treasure', 'Trash2Treasure''s mission is to make Northeastern University a zero-waste campus. Every semester, we collect items students no longer want or need and resell them at a low cost to students the next semester, promoting a circular economy on campus.', 'Trash2Treasure has one primary mission: to help Northeastern University become a zero-waste campus. This can be achieved by a number of programs set forth by T2T -- most notably, the annual T2T Sale. Every year during Spring move-out, T2T collects items from students that they would otherwise throw away (anywhere from electronics to rugs to kitchen utensils). Then, at the beginning of the Fall semester, all of the items are sold in a yard-sale fashion at incredibly low prices. In 2023 we saved 11,428 pounds from the landfill. In addition, we partnered with 5+ community organizations to recycyle unusual items. We are actively trying to expand our programming and look forward to more great work towards achieving zero waste.', '804', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('f4a21b9c-374c-4712-8f73-0a9b3a3cedd0', 'Treble on Huntington A Cappella Group', 'Treble on Huntington is Northeastern University''s first women''s a cappella group.', 'Founded in 2007, Treble on Huntington is Northeastern University''s first women''s a cappella group. Treble travels around the Boston area and the U.S. for competitions and concerts, showcasing their pop and mixed-genre repertoire and the hard work and unique artistry they''ve cultivated over 10+ years. - - - -Be sure to check out their EP Aura, along with all of their other released music, on all streaming platforms now. - - - -Treble on Huntington is holding Fall 2024 auditions in September! Be sure to follow us on all of our social media to stay in the loop. But, if you: - - - Want to learn more about the audition process, click here. - - - Want to ask us a question, click here. - - - Want to be added to an email list to get updates on auditions as they approach, click here. - - - -We are so excited to hear your beautiful voices! :)', '896', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5e594405-8b69-41ab-9612-651dc6b7e3b7', 'Trivia Club', 'Join us weekly for fun trivia nights, game show nights, and more!', 'Trivia Club''s purpose is to facilitate the study of trivia facts and compete in fun trivia games. We enjoy enriching our minds and lives with trivia facts in order to broaden our breadth of knowledge and in order to meet like-minded nerds. - -We hope to compete not only amongst ourselves and develop ranks of achievement, but to participate in external trivia bowl / quiz events in the Greater Boston area and the New England area. Our scope includes serious competition, friendly exhibition matches, but mostly fun practices just to see what others know. - -Every Tuesday we hold our meetings in Hastings Hall room 206 at 8pm, and Wednesdays and Fridays we have trivia nights at restaurants around town. Come to a meeting to learn more! - -Please fill out this form if you would like to be included in our email list: http://eepurl.com/h-W1ZP - -Groupme, our main communication platform: https://web.groupme.com/join_group/93683454/vJZNo1Kt', '455', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('7db4ba58-2f38-4785-b3c1-4ff7bf9d7756', 'Turkish Student Association', 'To educate our fellow peers and professors about the culture, history, and current state of Turkey, and to help incoming Turkish students adapt to their university life in Boston and the US.', 'Welcome to the Turkish Student Association at our university! We pride ourselves on fostering a vibrant community that celebrates the rich culture, history, and current affairs of Turkey. From educational events that enlighten our peers and professors to providing essential support for incoming Turkish students adjusting to life in Boston and the US, we strive to create an inclusive environment where everyone can connect, learn, and grow together. Whether you''re curious about Turkey or seeking a friendly community to join, we''re here to welcome you with open arms!', '102', 'FALSE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('4b95f558-1b83-4811-b184-de22760502b1', 'Ukrainian Cultural Club of Northeastern University', 'The primary purpose of this organization is to unite students at Northeastern University and neighboring colleges of Ukrainian descent as well as anyone interested in Ukraine, its culture, language, or history.', 'The primary purpose of this organization is to unite students at Northeastern University and neighboring colleges of Ukrainian descent as well as anyone interested in Ukraine, its culture, language, or history. The goal of this organization is to enrich individuals with the Ukrainian culture via meetings, events, and community service opportunities. The club is hopeful that this will increase student cultural awareness among Northeastern students and others.', '329', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b9bc8a29-6d51-4e83-8c44-2c5cd4112348', 'Undergraduate Global Health Initiative', 'The Undergraduate Global Health Initiative (UGHI) is an organization on campus that seeks to educate fellow students about the pressing issues of global healthby organizing events that promote research, advocacy, and interdisciplinary teamwork ', 'NUGHI members take part in planning health equity and social justice-centered events, such as conversations with activists and clinicians and volunteering opportunities, in collaboration with non-profit organizations and/or student groups on campus. (Past events include Black Health Matters, Palestinian Health Panel, Indigenous People’s Day Health Panel, and many others). ', '867', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('88d0788a-dffc-49b7-81aa-d7832a0a9971', 'UNICEF at Northeastern', 'UNICEF at Northeastern advocates to educate the Northeastern community about UNICEF''s work to protect the rights of children around the world. In addition to raising awareness, we also raise funds to contribute towards UNICEF''s most important projects.', 'UNICEF at Northeastern partners with the U.S. Fund for UNICEF to expand and support UNICEF''s work across the country. We center our work around education, advocacy and fundraising. As a club, we raise awareness about UNICEF''s work through presentations, fundraisers and social events. Members also get a chance to learn about volunteer opportunities directly from UNICEF.', '271', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d31c5a2d-d5a7-4ad5-bcbf-e7b3d0c8f7a3', 'Unicycling at Northeastern Club', 'Come unicycle with us every Saturday 12pm! If you don''t know how, we''ll lend you one and teach you. All skill levels welcome! - -', 'Unicycle Club aims to introduce the sport of unicycling to the Northeastern community, providing a supportive and encouraging space for newcomers and mentors alike. We know that not many people have touched or maybe even seen one, but you’d be surprised how far an afternoon of practice could get you! - -https://linktr.ee/neunicyclers?utm_source=linktree_profile_share&ltsid=fb05dda1-492a-484e-848d-51da44e308a0', '594', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('de2ca761-e4ee-4856-8d2a-928249362806', 'United Against Inequities in Disease', 'United Against Inequities in Disease is a national, nonprofit organization that empowers students to develop and eliminate public health inequities through community engagement, volunteering, and research. ', 'United Against Inequities in Disease, or UAID, focuses our efforts on local communities, conducting our work in collaboration with local partners, and leveraging the power of research and an interdisciplinary approach to combatting health inequity. Through our work, we aim to both reduce health inequities in our communities today and also empower public health advocates of tomorrow. We encourage students of all backgrounds and disciplines to join our mission to create sustainable health interventions in Boston.', '949', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b30e9302-6a7f-490a-b9e0-48a9a9d42e2d', 'University Health and Counseling Services (Campus Resource)', 'The University Health and Counseling Services Team is anxious to serve you. We hope that you will use our center as a resource, to help stay healthy, physically and mentally, and for care when you are ill or injured, or depressed or stressed.Our medica...', 'The University Health and Counseling Services Team is anxious to serve you. We hope that you will use our center as a resource, to help stay healthy, physically and mentally, and for care when you are ill or injured, or depressed or stressed. Our medical and behavioral health teams will work with you as partners in your health care so that you get confidential, compassionate and high quality care. We believe in caring for you and advocating for your well-being throughout your college experience.', '892', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('110e0c85-45e0-4461-a82b-837dde664284', 'UTSAV - South Asian Organization', 'UTSAV, named for the Sanskrit word meaning "Festival," was started in 1991 by a handful of South Asian students. Now in its 32nd year, UTSAV has grown into a large community of over 250 South Asian and South Asian American students.', 'UTSAV, named for the Sanskrit word meaning "Festival," was started in 1991 by a handful of South Asian students. Now in its 33rd year, UTSAV has grown into a large community of over 250 South Asian and South Asian American students, and continues to strive to provide them with a sense of belonging, along with supplying fun, unique, and thoughtful opportunities for all Northeastern students to learn about South Asian heritage and identity. We represent students from Bangladesh, Bhutan, India, Nepal, Pakistan and Sri Lanka. Although we represent these six countries, we encourage those of any background to engage with us to navigate South Asian culture, tradition, and context. We are also members of Northeastern''s Pan-Asian American Council, as well as the EMPOWER network for students of color on campus. We hope you join our community, attend our events, perform in our shows, and come share your stories with us! - - - -This is a UNDERGRADUATE STUDENT only organization.', '386', 'TRUE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('27b8ce39-c89e-49f9-a19b-92ea7da6c633', 'Vietnamese Student Association', 'We are a student group that helps promote an awareness of the Vietnamese and Vietnamese American culture to the diverse community of Northeastern. Please like and check out our Facebook and Instagram for more information and updates!', 'We are a student group that helps promote an awareness of the Vietnamese and Vietnamese American culture to the diverse community of Northeastern, and as such we like to call our org a "Home Away From Home"! We emphasize four pillars in our community: Culture, Food, Family, and Dance! We have biweekly general meetings, host multiple events each year - such as our annual Culture Show - and participate in many huge collaborations such as A Night in Asia and Mid-Autumn Festival. We are proud to be part of Northeastern PAAC as well as NEIVSA, the New England Intercollegiate VSA. Please like and check out our Facebook page for more information and updates, and stay connected with us on our Instagram @NortheasternVSA! Thanks for checking us out, and we hope to meet with you soon!', '424', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('e6da21eb-bf79-42af-8a65-5584b84f62d8', 'Virtual Reality Organization of Northeastern University', 'NUVR aims to utilize the latest technologies to develop and research virtual experiences. Please check out our Summer Involvement Fair Information session at this link to learn about what NUVR can offer you this year.', 'NUVR aims to utilize the latest technologies to develop and research virtual experiences. If you have any interest in learning about VR, AR, or XR as a whole join our discord to get in contact with us: https://discord.gg/gfeuhJmeQb - -You can also follow our Instagram: @northeastern_vr to get weekly updates about our meetings - -See you soon!', '422', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('b38c999f-49f5-4ec7-a37f-0f390fc68e75', 'ViTAL: Northeastern''s Healthcare Innovation Core', 'ViTAL is a student-run undergraduate organization that inspires students to explore and innovate beyond the traditional realm of healthcare professions to better serve patients/clients and their families and to enhance the future of healthcare.', 'ViTAL is a student-run undergraduate organization that inspires students to explore and innovate beyond the traditional realm of healthcare professions to better serve patients/clients and their families and to enhance the future of healthcare. We foster an interdisciplinary community of healthcare leaders through guest speaker events, the Husky Health Innovation Challenge, a healthcare case competition, and ViTAL Ventures Consulting, our pro-bono consulting arm. ', '524', 'FALSE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('bf4945de-9b26-4bde-84bf-85f9b2b9fdd0', 'Wildlife/Ecology Club', 'A club dedicated to preserving ecological diversity and educating the Northeastern student population around issues of ecology. ', 'The Northeastern Wildlife/Ecology Club is dedicated to spreading awareness of the ecological diversity on our planet, the devastating effects of climate change on nature, and what we can do to preserve our planet. This club is a coming together of individuals with a passion for ecology and a drive for change. ', '956', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('aac82c95-2ad5-4226-b74f-a6879fe86ed7', 'Wireless Club', 'NU Wireless Club is a electronics experimentation club, where students from all disciplines can meet to work on projects and learn electronics through hands-on applications. The club features a lab space and a full amateur radio station.', 'NU Wireless Club is an electronics experimentation club, where students from all disciplines can meet to work on projects and learn electronics through hands-on applications. The club features a maker space and a full amateur radio station.', '393', 'FALSE', 'always', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('5c3abab8-bc93-4dc1-8de0-70d5b9cdd18a', 'Women in Business', 'NU Women in Business empowers undergraduate womxn at Northeastern University through professional and personal development events, fostering their success in the business world. Join us to unlock your potential and thrive in a supportive community.', 'Welcome to Northeastern Women in Business (WIB), a thriving organization built on the four principles of professional development, inspiration, mentorship, and community. We host a variety of events every Tuesday at 8PM that are geared towards these four principles in an overall mission to support and uplift the young women of Northeastern who are interested in the dynamic, interdisciplinary world of business. - -Professional DevelopmentOur professional development events are designed to equip you with the critical hard skills and soft skills necessary to excel in the business industry. Hoping to revamp your resume or ace your upcoming co-op interview? Our fun workshops and activities provide practical guidance that will help you stand out among your peers! - -InspirationPrepare to be inspired by our captivating Executive Speaker series, where we bring in top female business leaders from the Boston area. These accomplished individuals share their remarkable stories, providing invaluable insights and igniting a passion for success. Additionally, our panel events feature esteemed alumni and even our own student body, discussing post-grad life or the transformative co-op experience. - -MentorshipOur remarkable Mentor/Mentee program pairs older members, who have completed at least one co-op, with younger members seeking guidance in their Northeastern journey. This unique relationship provides an exceptional opportunity to learn from other inspiring women who have walked in your shoes, offering invaluable advice and insights that can shape your future success. - -CommunityAt WIB, we believe that a strong community fosters growth. That’s why we host a variety of engaging community events, called Empower Hour, including fun socials that foster friendships and connections beyond the classroom. Other Empower Hour socials focus on topics like healthy work-life balance, taking members out of the classroom and into activities such as group workouts, shared meals, and adopting balanced lifestyles. - -Joining WIB means becoming part of a strong and beautiful community. We are dedicated to helping each other grow, supporting one another’s aspirations, and celebrating our collective achievements. Whether you’re a young underclassman or an upperclassman seeking new horizons, WIB welcomes you with open arms!', '467', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('648f5dde-d549-4879-a645-f7fd1aef22b4', 'Women in CyberSecurity', 'Women in CyberSecurity (WiCyS) is dedicated to bringing together female leaders interested in cybersecurity. We hold workshops, seminars, and opportunities for community bonding, offering you chances to learn and network.', '***WE DO NOT REGULARLY USE ENGAGE! Check out our Linktree (the globe icon under "Contact Information") to see the best ways to keep in touch with us!*** - -WiCyS is a national organization and global community of women, allies, and advocates who are dedicated to bringing talented women together to celebrate and foster their passion and drive for cybersecurity. As Northeastern University’s chapter of the national organization, we bring this environment of community engagement and career-building to Northeastern and its students. - -Our intended audience is women interested in cybersecurity, both undergraduate and graduate, looking to have a career in cyber or even just curious and open to learning more about the world of security. NU WiCyS is a close-knit community providing a safe space for an underrepresented niche. - -Our purpose is to bring passionate and driven women to a united space where they can share their love for cybersecurity. We also strive towards educating people, connecting communities with industry leaders/professionals, connecting students with faculty, and guiding students towards research opportunities. We put a large emphasis on sharing the experiences of upperclassmen to the underclassmen looking for advice and guidance. - - ', '406', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d6950ddc-1c2c-4c39-8b58-8a8ad66482f1', 'Women in Economics', 'Women in Economics addresses the gender disparities within economics. We cultivate an empowering community for all students who express an interest in the field of economics by inviting them to engage with economics on an interdisciplinary level.', 'As an undergraduate student organization, Women in Economics addresses the gender disparities within economics. We cultivate an empowering community for all students who express an interest in the field of economics. We invite our members to engage on an interdisciplinary level with economics while promoting diversity and inclusivity. Women in Economics provides members with skills-building opportunities, empowerment in the field, and a connection with faculty and graduate students. - -We host bi-weekly meetings along with occasional large-scale events during the year. The focus of our more informal weekly meetings is to provide a space where members can connect with each other and share their thoughts on the topic at hand. These meetings cover current research being done by female economists, workshops on important tools for success in the field, and discussions about improving the field for women. - -With the larger events, we seek to inspire and encourage members by demonstrating the possibilities of the tools of economics. These events will feature a speaker, either a PhD student in economics or professor, who will speak to the group about their research, experience, and challenges in the field. - -We welcome all to join Women in Economics regardless of major. ', '388', 'TRUE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('bfaef5ac-4c61-4e7a-849e-c60b4790c1b7', 'Women in Music Northeastern', 'WIM Northeastern is the first collegiate chapter of Women in Music and aims to provide educational resources and networking opportunities for aspiring music industry professionals. ', 'Women in Music Northeastern is the first collegiate chapter of Women in Music and aims to provide educational resources and networking opportunities for aspiring music industry professionals, with a focus on empowering, supporting, and recognizing women-identifying students and individuals in the musical arts. ', '773', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a5b79b0c-bdf1-4ff3-84f1-6a0e1425f373', 'Women in the Enterprise of Science and Technology at Northeastern', 'WEST NEU is Northeastern''s chapter of WEST, or Women in the Enterprise of Science and Technology. The Northeastern chapter was formed to foster connections with professionals in STEM-based fields, with a focus on networking and mentorship.', 'WEST NEU is Northeastern’s chapter of WEST, or Women in the Enterprise of Science and Technology. WEST is an organization in the greater Boston area that is dedicated to expanding and enriching the careers of women in the fields of science, technology, and engineering. WEST NEU is an avenue for Northeastern students to connect with established members of the organization and other Boston-based students in STEM. WEST NEU offers monthly workshops and panels tailored to helping women develop as leaders in their fields. WEST members include prominent women and minorities holding executive positions in their fields, helping connect WEST NEU members to unique resources and opportunities. Our mission is to connect Northeastern students to the plethora of resources that WEST has to offer, in order to inspire and facilitate the career advancement of our members.', '436', 'FALSE', 'fall', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('4cf62182-da37-4bf0-8e59-4bac1be6a79e', 'Women''s and Nonbinary Club Ultimate Frisbee', 'This is the women''s club ultimate frisbee team. We have 2 teams, one high-commitment team that competes nationally and one lower-commitment team that competes in the region. Both teams love to have fun and play ultimate together. No experience needed!', 'We are the women''s club ultimate frisbee team. We have 2 teams: one high-commitment team that competes nationally and one lower-commitment team that competes in the northeast region. Both teams love to have fun and play ultimate together. No experience is necessary to join! Check out the Gallery, Documents, and these two websites for more introductory information', '426', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('1bbc7ad4-962b-4e1c-afd9-300f67cd50fe', 'Women''s Club Basketball', 'Northeastern Women''s Club Basketball is a great opportunity for players who want to continue playing basketball competitively without committing to the rigorous collegiate level. - -', 'Northeastern Women''s Club Basketball is a great opportunity for players who want to continue playing basketball competitively without committing to the rigorous collegiate level. This organization allows students to develop their skills, compete against other college teams, and have fun while doing it! Please contact nuwomensclubbball@gmail.com for more information.', '395', 'FALSE', 'fallSpring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('38eb6703-0c11-491b-a6e9-d88d84a4ed8b', 'Women''s Club Ice Hockey', 'We are a student-run club hockey organization based out of Northeastern University. Our purpose is to give Northeastern students an opportunity to continue their ice hockey careers in a collegiate setting, and to participate in the sport of ice hockey ...', 'We are a student-run club hockey organization based out of Northeastern University. Our purpose is to give Northeastern students an opportunity to continue their ice hockey careers in a collegiate setting, and to participate in the sport of ice hockey at a competitive level in a team environment. We participate in the Presidential Division of the IWCHL, playing teams from around the Boston and New England area and within Division 2 of the ACHA.', '60', 'TRUE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('d66326e4-af95-4625-8274-590a0d7388b5', 'Women''s Club Lacrosse', 'Last year, the Northeastern Women''s Lacrosse team made it to the NEWLL regional playoffs, but fell to Boston College in the semifinals. The team also traveled to Clemson to play some of the best teams in the country. We are a competitive team with grea...', 'Last year, the Northeastern Women''s Lacrosse season was cut short due to Covid-19, however had an outstanding year in 2019. The team beat their biggest competitor. Boston College, in the Semifinals, making it to the National Tournament hosted in Virginia Beach for the first time in years. NUWLAX also traveled to Colorado to play some of the best teams in the country, going 4/4 that weekend. We are a competitive team with great chemistry and a force to be reckoned with.', '669', 'FALSE', 'spring', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('a536b622-a91e-4064-acb3-c7d7f8f5c1ea', 'Women''s Club Water Polo', 'Northeastern University Women''s Club Water Polo competes in the New England Division of the Collegiate Water Polo Association. Feel free to reach out if you''re interested in joining the team, there''s no experience necessary! Check out our insta or FB!', 'Northeastern University Women''s Club Water Polo competes in the New England Division of the Collegiate Water Polo Association. We are a no experience needed team with no try outs and players of a variety of skill levels. So definitely feel free to reach out if you''re interested in joining the team! ', '1010', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('312c7723-493f-4f4a-b9b9-635bb832b1ac', 'Women''s Interdisciplinary Society of Entrepreneurship', 'WISE is a student-led organization dedicated to supporting womxn interested in exploring entrepreneurship through interdisciplinary workshops, mentorship pairings, and startup classes.', 'The Women’s Interdisciplinary Society of Entrepreneurship (WISE) is a student-led group at Northeastern University dedicated to helping women develop an innovative mindset through interactive workshops (WeLearn), a thought-incubator (WeBuild), and mentorship pairings (WeSupport). - -WISE provides students the opportunity to explore curiosities and discover paths together. Experiential learning is at the heart of Northeastern University, and WISE builds upon its ethos. - -Whether you are looking to attend interactive workshops that showcase entrepreneurship in every light, find a mentor to help develop personal and professional skills, or strengthen problem-solving skills through working on a semester-long project, WISE has an opportunity for you! - -If your interested and want to learn more, sign up for our newsletter here! - -Also, follow us on instagram @northeasternwise', '868', 'FALSE', 'spring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('17ca81bd-194f-46a9-81fd-69ca39101a37', 'Woof Magazine', 'Woof Magazine is Northeastern''s only lifestyle magazine on campus. We’re your source for fun things you can do on campus or around Boston, opinions on hot topics, and much more with all writing, photography, and design created by students.', 'Woof Magazine is Northeastern''s only on-campus lifestyle magazine. We’re your source for fun things you can do on campus or around Boston, opinions on hot topics and much more with all writing, photography and design created by students. Currently, we print one issue each academic year, publish articles on our website and post on our Instagram constantly! Woof welcomes students of all levels: join to learn or improve your creative skills and get your work published! - -If you are interested in joining Woof, join our Slack!', '622', 'TRUE', 'fallSpring', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('80400af6-e6a1-4321-992d-48c09fc68984', 'WRBB 104.9FM Campus Radio', 'WRBB has provided the Northeastern and Back Bay communities with the best on-air programming since the ''60''s, and that hasn''t changed in the modern era! Launching bands like Passion Pit, All These Elements, and numerous others, WRBB is dedicated to sup...', 'WRBB has provided the Northeastern and Back Bay communities with the best on-air programming since the ''60s, and that hasn''t changed in the modern era! Launching bands like Passion Pit, All These Elements, and numerous others, WRBB is dedicated to supporting the Boston music scene and act as a creative and professional outlet for those interested in broadcast media. Join today and get on the air, or get involved with our growing promotional department, award-winning sports broadcasters, music department, or even get involved with booking shows on campus! WRBB is one of the biggest media groups on campus for a reason. We dare you to listen. ', '669', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('ae4f1111-5c1a-4600-bd9e-f0183e727e06', 'Young Democratic Socialists of America at Northeastern University', 'Expanding socialist politics and labor solidarity is the name of the game! We are a collective organizing for a future where workers control their economic output and no person is exploited. We host several campaigns and political education events.', 'Our mission is to educate and organize students and young people to play a helpful and principled role in the movement for social and economic justice in the Northeastern University and local communities. Within and throughout this struggle both nationally and locally, we will articulate and defend the idea that true human liberation is impossible under capitalism. We seek social change which extends democracy into all aspects of life -- social, political and economic. We accept members of broad ideologies while never sacrificing our values. We believe in the universality of social programs, the collective ownership of the means of production, and our struggle for justice will not end until every human can live a just life. Our vision of socialism is profoundly democratic, feminist, and anti-racist. ', '38', 'TRUE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('7b6c22b2-e81d-45f2-b619-b5b9fc031ba9', 'Zeta Beta Tau: Gamma Psi Chapter', 'A chapter of the Zeta Beta Tau fraternity operating at Northeastern University', 'Our fraternity is a brotherhood of college aged men who have a vested interests in striving for excellence. We host various events including philanthropy events on and off campus that raise money for various different charities in Boston. We have roughly 30 members consisting of all undergraduate students.', '3', 'TRUE', 'always', 'unrestricted', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "clubs" ("id", "name", "preview", "description", "num_members", "is_recruiting", "recruitment_cycle", "recruitment_type", "parent") VALUES ('6f641d7c-9d1e-4b8a-9fd5-79d05463c131', 'Zeta Phi Beta Sorority, Inc.', 'The Beta Chi chapter of Zeta Phi Beta Sorority, Inc. was chartered on March 31, 2023, by six matriculating women on the campus of Northeastern University. Beta Chi is a university-based undergraduate chapter that seeks to serve the Northeastern community', 'The Beta Chi chapter of Zeta Phi Beta Sorority, Inc. was chartered on March 31, 2023, by six matriculating women on the campus of Northeastern University. Beta Chi is a university-based, undergraduate chapter that seeks to serve the students and community of Northeastern while upholding the sorority''s principles of scholarship, service, sisterhood, and finerwomanhood.', '77', 'FALSE', 'fall', 'application', '00000000-0000-0000-0000-000000000000'); -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '07d91099-3ccd-481e-b24d-cfa7b5bdce52') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '07d91099-3ccd-481e-b24d-cfa7b5bdce52') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '02823e48-6cb5-4727-ae13-3ca6b4eca78b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '02823e48-6cb5-4727-ae13-3ca6b4eca78b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '02823e48-6cb5-4727-ae13-3ca6b4eca78b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '75dc80f4-ea4f-4964-8fba-e752794d1a47') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '82142fe4-7603-4828-9d19-64fbbe09029d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '82142fe4-7603-4828-9d19-64fbbe09029d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '82142fe4-7603-4828-9d19-64fbbe09029d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '82142fe4-7603-4828-9d19-64fbbe09029d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '82142fe4-7603-4828-9d19-64fbbe09029d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', '8e12dc9d-2900-4cca-b08d-caed85720fa6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '8e12dc9d-2900-4cca-b08d-caed85720fa6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '8e12dc9d-2900-4cca-b08d-caed85720fa6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', '2b4315f6-304f-4704-be0f-ba367fe87932') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '2b4315f6-304f-4704-be0f-ba367fe87932') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '2b4315f6-304f-4704-be0f-ba367fe87932') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '33a0db57-ff20-4997-bfe7-518c7d8db242') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '33a0db57-ff20-4997-bfe7-518c7d8db242') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '952d429e-f309-4332-a45b-113efd8e27ac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('f810f8cf-4957-4012-892a-a50cd15e7294', '952d429e-f309-4332-a45b-113efd8e27ac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '952d429e-f309-4332-a45b-113efd8e27ac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '952d429e-f309-4332-a45b-113efd8e27ac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '1eff502d-5ac2-4f9d-a33e-66a5e9b98f15') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '1eff502d-5ac2-4f9d-a33e-66a5e9b98f15') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '1eff502d-5ac2-4f9d-a33e-66a5e9b98f15') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '1eff502d-5ac2-4f9d-a33e-66a5e9b98f15') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', 'cb86b62b-a14f-49d0-8217-005f456992d0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'cb86b62b-a14f-49d0-8217-005f456992d0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'cb86b62b-a14f-49d0-8217-005f456992d0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('5b779401-bfa3-45c3-9f90-bb018ad8caec', 'cb86b62b-a14f-49d0-8217-005f456992d0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'e1e3acda-e4d0-477d-b504-c84e9bd035f4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'e1e3acda-e4d0-477d-b504-c84e9bd035f4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', 'e1e3acda-e4d0-477d-b504-c84e9bd035f4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', 'e1e3acda-e4d0-477d-b504-c84e9bd035f4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', 'e1e3acda-e4d0-477d-b504-c84e9bd035f4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'f7ba90a7-6dc5-45ce-8297-c98eff5eb887') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', 'e9acd08e-38f7-4605-95f1-2f2f5489a85e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', 'e9acd08e-38f7-4605-95f1-2f2f5489a85e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', 'b2acdd0b-da3d-4b1a-a6d5-6aa1b2150289') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('634b4962-9bf6-444e-84c7-5e54d8655ba4', 'b2acdd0b-da3d-4b1a-a6d5-6aa1b2150289') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', 'b2acdd0b-da3d-4b1a-a6d5-6aa1b2150289') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', 'b2acdd0b-da3d-4b1a-a6d5-6aa1b2150289') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', 'a3b62d86-ceeb-4172-9e2d-2c24849ce4f3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a3b62d86-ceeb-4172-9e2d-2c24849ce4f3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', 'f547f70a-c0d7-4819-af01-3a60c87887f1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'f547f70a-c0d7-4819-af01-3a60c87887f1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', 'f547f70a-c0d7-4819-af01-3a60c87887f1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '11920fef-97cb-459d-925d-3278273af5fd') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', '11920fef-97cb-459d-925d-3278273af5fd') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '11920fef-97cb-459d-925d-3278273af5fd') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '11920fef-97cb-459d-925d-3278273af5fd') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('ae80ccd8-f2be-4785-b08b-c13c59f6cf84', '11920fef-97cb-459d-925d-3278273af5fd') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', '64187513-b253-4146-b8f4-3f054e006c0f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', '64187513-b253-4146-b8f4-3f054e006c0f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '64187513-b253-4146-b8f4-3f054e006c0f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '1f6a6680-7f92-4dfa-852a-35a60a680e2c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '1f6a6680-7f92-4dfa-852a-35a60a680e2c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'ae05ed0d-760d-4d49-b9f8-f3c8c511f673') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'ae05ed0d-760d-4d49-b9f8-f3c8c511f673') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'ae05ed0d-760d-4d49-b9f8-f3c8c511f673') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', 'ae05ed0d-760d-4d49-b9f8-f3c8c511f673') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', 'c65f0dfb-ffbc-4a57-a59c-b8a421036017') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', 'c65f0dfb-ffbc-4a57-a59c-b8a421036017') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', 'c65f0dfb-ffbc-4a57-a59c-b8a421036017') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'c65f0dfb-ffbc-4a57-a59c-b8a421036017') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'c65f0dfb-ffbc-4a57-a59c-b8a421036017') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '7530b744-7467-4556-a6a1-6d7def71452b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '7530b744-7467-4556-a6a1-6d7def71452b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '7530b744-7467-4556-a6a1-6d7def71452b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '7530b744-7467-4556-a6a1-6d7def71452b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '7530b744-7467-4556-a6a1-6d7def71452b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '7530b744-7467-4556-a6a1-6d7def71452b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '006ac5f3-a924-478e-96ee-81c89ee5b0a2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '006ac5f3-a924-478e-96ee-81c89ee5b0a2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '006ac5f3-a924-478e-96ee-81c89ee5b0a2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5aa9d717-c2d9-449b-9f5f-31651e0bb833') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '2c410248-ebe5-4eff-a6a7-f3e24d7a388b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '2c410248-ebe5-4eff-a6a7-f3e24d7a388b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', '63f14e5f-340f-44c8-be84-c148f72647f2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', '63f14e5f-340f-44c8-be84-c148f72647f2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '63f14e5f-340f-44c8-be84-c148f72647f2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '63f14e5f-340f-44c8-be84-c148f72647f2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '63f14e5f-340f-44c8-be84-c148f72647f2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '889424c8-db97-415e-a3fd-879e1b348c82') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '86596efb-e351-44b1-b765-54f292cc8159') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '86596efb-e351-44b1-b765-54f292cc8159') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '86596efb-e351-44b1-b765-54f292cc8159') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', 'fd7ed185-e0d8-4a32-b287-35fb8b70fe6a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'fd7ed185-e0d8-4a32-b287-35fb8b70fe6a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'fd7ed185-e0d8-4a32-b287-35fb8b70fe6a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', 'ee941f33-6952-449c-a214-228f399a770f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'ee941f33-6952-449c-a214-228f399a770f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'ee941f33-6952-449c-a214-228f399a770f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('374736cf-3d8d-4ffc-849f-89efd55ee243', 'ee941f33-6952-449c-a214-228f399a770f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', 'a1921f1d-f7e7-4c3d-b4da-3669172ff1e9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', 'a1921f1d-f7e7-4c3d-b4da-3669172ff1e9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', 'a1921f1d-f7e7-4c3d-b4da-3669172ff1e9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a1921f1d-f7e7-4c3d-b4da-3669172ff1e9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('1f14ba08-b71f-4f00-b2a4-a9b6ae25e420', '8fbb2d83-09fe-4269-9a10-16f082cbc067') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '578da4f2-2b3c-4e2c-91e0-966ea85580d7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '578da4f2-2b3c-4e2c-91e0-966ea85580d7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '578da4f2-2b3c-4e2c-91e0-966ea85580d7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '578da4f2-2b3c-4e2c-91e0-966ea85580d7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '578da4f2-2b3c-4e2c-91e0-966ea85580d7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '0968bde1-e0b5-4425-bfdb-8682a70038b7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '0968bde1-e0b5-4425-bfdb-8682a70038b7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '0968bde1-e0b5-4425-bfdb-8682a70038b7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', 'c9dd5836-8c0c-444a-a85e-1bb2d362fa25') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', 'c9dd5836-8c0c-444a-a85e-1bb2d362fa25') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'c9dd5836-8c0c-444a-a85e-1bb2d362fa25') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', 'c9dd5836-8c0c-444a-a85e-1bb2d362fa25') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '73956459-f909-4dbc-a9d7-fda4e2d6b521') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '73956459-f909-4dbc-a9d7-fda4e2d6b521') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '73956459-f909-4dbc-a9d7-fda4e2d6b521') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '73956459-f909-4dbc-a9d7-fda4e2d6b521') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '73956459-f909-4dbc-a9d7-fda4e2d6b521') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '4031a438-5d75-484e-b2ea-47989cf09970') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '4031a438-5d75-484e-b2ea-47989cf09970') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '4031a438-5d75-484e-b2ea-47989cf09970') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '4031a438-5d75-484e-b2ea-47989cf09970') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '4031a438-5d75-484e-b2ea-47989cf09970') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '8bc2a8d9-fcba-496f-a8d3-f79f666f353b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '8bc2a8d9-fcba-496f-a8d3-f79f666f353b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '8bc2a8d9-fcba-496f-a8d3-f79f666f353b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '8bc2a8d9-fcba-496f-a8d3-f79f666f353b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5b0abf55-2806-47d2-a95f-f8c411290df7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '5b0abf55-2806-47d2-a95f-f8c411290df7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '5b0abf55-2806-47d2-a95f-f8c411290df7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '5b0abf55-2806-47d2-a95f-f8c411290df7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'd1600f1e-31cf-4370-8b48-c852eecff9ad') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'd1600f1e-31cf-4370-8b48-c852eecff9ad') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', 'd1600f1e-31cf-4370-8b48-c852eecff9ad') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '3709674c-2428-4c9b-aba0-b6384f3d472a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', '3709674c-2428-4c9b-aba0-b6384f3d472a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '3709674c-2428-4c9b-aba0-b6384f3d472a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '21a2aaae-cc07-4c34-bc6c-2730e3d545f8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '21a2aaae-cc07-4c34-bc6c-2730e3d545f8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '21a2aaae-cc07-4c34-bc6c-2730e3d545f8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', '21a2aaae-cc07-4c34-bc6c-2730e3d545f8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'f1ac80bc-e361-4952-8978-8354d21e4ae9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'f1ac80bc-e361-4952-8978-8354d21e4ae9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '2bd54300-0c35-4215-acdc-996f79c65173') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '2bd54300-0c35-4215-acdc-996f79c65173') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '2bd54300-0c35-4215-acdc-996f79c65173') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '2bd54300-0c35-4215-acdc-996f79c65173') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '2bd54300-0c35-4215-acdc-996f79c65173') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'c5ae7818-c950-4d00-9d31-896bdde44289') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'c5ae7818-c950-4d00-9d31-896bdde44289') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', 'c5ae7818-c950-4d00-9d31-896bdde44289') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'c5ae7818-c950-4d00-9d31-896bdde44289') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '58cb00dc-7f5a-4dc3-86ff-fb5f8fcf67ed') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '58cb00dc-7f5a-4dc3-86ff-fb5f8fcf67ed') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '58cb00dc-7f5a-4dc3-86ff-fb5f8fcf67ed') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '58cb00dc-7f5a-4dc3-86ff-fb5f8fcf67ed') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '5d21ca30-045d-436d-9d50-9ca4e66ea184') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('f810f8cf-4957-4012-892a-a50cd15e7294', '5d21ca30-045d-436d-9d50-9ca4e66ea184') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5d21ca30-045d-436d-9d50-9ca4e66ea184') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '5d21ca30-045d-436d-9d50-9ca4e66ea184') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '5d21ca30-045d-436d-9d50-9ca4e66ea184') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '9b2fb82e-a66f-4ab2-86f5-2820d76898e7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '9b2fb82e-a66f-4ab2-86f5-2820d76898e7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('297fd449-1e9a-461b-8014-48f08fb16aa5', '7b2b7918-0324-4af5-a258-9da7299e7427') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', '7b2b7918-0324-4af5-a258-9da7299e7427') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '7b2b7918-0324-4af5-a258-9da7299e7427') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '7b2b7918-0324-4af5-a258-9da7299e7427') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', 'aa34fab0-e637-4e9e-b639-b802f38e1cb2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', 'aa34fab0-e637-4e9e-b639-b802f38e1cb2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', 'aa34fab0-e637-4e9e-b639-b802f38e1cb2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1000c08-c02e-421c-ad34-a81836d1d053', 'd78bd9d4-9898-49c1-a3e9-d7dbebf3854d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('f810f8cf-4957-4012-892a-a50cd15e7294', 'd78bd9d4-9898-49c1-a3e9-d7dbebf3854d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', 'd78bd9d4-9898-49c1-a3e9-d7dbebf3854d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'd78bd9d4-9898-49c1-a3e9-d7dbebf3854d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'd78bd9d4-9898-49c1-a3e9-d7dbebf3854d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '5e339489-2d81-42fe-b3d9-67aca6e58ade') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5e339489-2d81-42fe-b3d9-67aca6e58ade') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', 'ed6cd8c8-395a-4518-b088-297e242d1c12') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b533527-e232-42d6-9d50-686266095a6d', 'ed6cd8c8-395a-4518-b088-297e242d1c12') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'ed6cd8c8-395a-4518-b088-297e242d1c12') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '8a7c1789-7b91-414a-b762-0c536c065b4f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('e4ea26ce-1444-41be-9342-f085f615f9a7', '47923cd1-c713-4375-8e3f-4ba05a965835') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '47923cd1-c713-4375-8e3f-4ba05a965835') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '47923cd1-c713-4375-8e3f-4ba05a965835') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '3a07882c-8ad3-4603-8874-deff6257c63f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '3a07882c-8ad3-4603-8874-deff6257c63f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '3a07882c-8ad3-4603-8874-deff6257c63f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '3a07882c-8ad3-4603-8874-deff6257c63f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '0d1881f5-70d2-40e0-9bc0-c09bd5dfe4cf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '0d1881f5-70d2-40e0-9bc0-c09bd5dfe4cf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '0d1881f5-70d2-40e0-9bc0-c09bd5dfe4cf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '0d1881f5-70d2-40e0-9bc0-c09bd5dfe4cf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '0d1881f5-70d2-40e0-9bc0-c09bd5dfe4cf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '0d1881f5-70d2-40e0-9bc0-c09bd5dfe4cf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '5853cb38-3c73-4f76-a37a-4bfe9c7ff93d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5853cb38-3c73-4f76-a37a-4bfe9c7ff93d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '22282392-c6ec-4695-a166-54707a4920eb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '22282392-c6ec-4695-a166-54707a4920eb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '22282392-c6ec-4695-a166-54707a4920eb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '22282392-c6ec-4695-a166-54707a4920eb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '6353fdfb-e795-4d78-8287-be296708db7f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '6353fdfb-e795-4d78-8287-be296708db7f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('ad528419-c98a-47f9-b0a2-e72ac372faa2', '6353fdfb-e795-4d78-8287-be296708db7f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6353fdfb-e795-4d78-8287-be296708db7f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '022fc6e0-2b9e-474b-b6e1-43f4f88cc350') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '022fc6e0-2b9e-474b-b6e1-43f4f88cc350') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('5b779401-bfa3-45c3-9f90-bb018ad8caec', '01465118-26a2-4d8b-b4c4-826228f0b88e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '01465118-26a2-4d8b-b4c4-826228f0b88e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '01465118-26a2-4d8b-b4c4-826228f0b88e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '01465118-26a2-4d8b-b4c4-826228f0b88e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '01465118-26a2-4d8b-b4c4-826228f0b88e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', 'c9f58449-6a94-44c7-afc4-628cd7a0fc65') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'c9f58449-6a94-44c7-afc4-628cd7a0fc65') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', 'b6fda1b2-7120-452b-96f4-25054ad94389') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', 'b6fda1b2-7120-452b-96f4-25054ad94389') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'b6fda1b2-7120-452b-96f4-25054ad94389') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('374736cf-3d8d-4ffc-849f-89efd55ee243', 'b6fda1b2-7120-452b-96f4-25054ad94389') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('338fcc4b-2b2c-4312-8de9-58ccd249a028', '3f239dfb-8362-4f93-a54c-f8107e8ef2d7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '3f239dfb-8362-4f93-a54c-f8107e8ef2d7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '3f239dfb-8362-4f93-a54c-f8107e8ef2d7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '3f239dfb-8362-4f93-a54c-f8107e8ef2d7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '3f239dfb-8362-4f93-a54c-f8107e8ef2d7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '634d8b37-550e-410c-b99c-d0fd966f3229') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('1f14ba08-b71f-4f00-b2a4-a9b6ae25e420', '634d8b37-550e-410c-b99c-d0fd966f3229') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '634d8b37-550e-410c-b99c-d0fd966f3229') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '10f8b2a5-33fa-416f-9d84-6b9b7723ba2d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '10f8b2a5-33fa-416f-9d84-6b9b7723ba2d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('3b8d0f19-9588-4e45-b038-77cba49803c0', 'c8279222-aff2-46a7-9069-30f762fff748') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', 'c8279222-aff2-46a7-9069-30f762fff748') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('634b4962-9bf6-444e-84c7-5e54d8655ba4', 'c8279222-aff2-46a7-9069-30f762fff748') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'c8279222-aff2-46a7-9069-30f762fff748') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'c8279222-aff2-46a7-9069-30f762fff748') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'f7002326-556e-47a4-9abe-498844fc6a33') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'f7002326-556e-47a4-9abe-498844fc6a33') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('9195072b-0a1b-4915-bd80-10b05ad1bef0', 'fb0657be-9b2e-4471-b90d-86c1c247a6b2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'fb0657be-9b2e-4471-b90d-86c1c247a6b2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', 'c17df5f6-6bc1-4063-a0a9-1ef900406a1f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'c17df5f6-6bc1-4063-a0a9-1ef900406a1f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'c17df5f6-6bc1-4063-a0a9-1ef900406a1f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'c17df5f6-6bc1-4063-a0a9-1ef900406a1f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'c17df5f6-6bc1-4063-a0a9-1ef900406a1f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '640a7dea-8630-4aa1-8be8-940a336e359d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a561e329-6337-4ba9-ab92-e92b0b1f1a40') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '1e5fc4c7-78d8-4dbf-8612-bfd44c2bc113') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '1e5fc4c7-78d8-4dbf-8612-bfd44c2bc113') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '1e5fc4c7-78d8-4dbf-8612-bfd44c2bc113') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'efd81923-a8b2-4598-aa31-ffc0eefca530') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'efd81923-a8b2-4598-aa31-ffc0eefca530') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'b64572a6-8c30-4d84-8828-0ab5a3719967') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', 'b64572a6-8c30-4d84-8828-0ab5a3719967') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a660b03d-e5cf-4ea6-bf19-8373baab801a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'a660b03d-e5cf-4ea6-bf19-8373baab801a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1000c08-c02e-421c-ad34-a81836d1d053', '6ae239d3-e712-44a4-a4d1-99d8df8a6286') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '6ae239d3-e712-44a4-a4d1-99d8df8a6286') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6ae239d3-e712-44a4-a4d1-99d8df8a6286') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '6ae239d3-e712-44a4-a4d1-99d8df8a6286') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('67f9a398-4dd3-4cc5-8e72-8f3f2e65a436', '6ae239d3-e712-44a4-a4d1-99d8df8a6286') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '0c4628be-3745-4c63-aacf-8046ce2bf7d0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '0c4628be-3745-4c63-aacf-8046ce2bf7d0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '0c4628be-3745-4c63-aacf-8046ce2bf7d0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('374736cf-3d8d-4ffc-849f-89efd55ee243', '0c4628be-3745-4c63-aacf-8046ce2bf7d0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'b95c5bf2-e75b-4af8-8f09-cf9ea9403c91') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '4f9b1c4d-2f02-43d8-9d8c-b7ecebf423a1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '4f9b1c4d-2f02-43d8-9d8c-b7ecebf423a1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '4f9b1c4d-2f02-43d8-9d8c-b7ecebf423a1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '4f9b1c4d-2f02-43d8-9d8c-b7ecebf423a1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '2d6b5173-0074-4a29-8b40-b99227344f63') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '2d6b5173-0074-4a29-8b40-b99227344f63') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '2d6b5173-0074-4a29-8b40-b99227344f63') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '2d6b5173-0074-4a29-8b40-b99227344f63') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('ae80ccd8-f2be-4785-b08b-c13c59f6cf84', 'd8c815c1-b68f-4675-8ac8-70911ca7963f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', 'd8c815c1-b68f-4675-8ac8-70911ca7963f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', 'd8c815c1-b68f-4675-8ac8-70911ca7963f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'd8c815c1-b68f-4675-8ac8-70911ca7963f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', 'd4770261-f9a0-4edb-8c3e-0b7d413484cf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'd4770261-f9a0-4edb-8c3e-0b7d413484cf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', 'd4770261-f9a0-4edb-8c3e-0b7d413484cf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'd4770261-f9a0-4edb-8c3e-0b7d413484cf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', 'f2392921-48f8-49d7-aea2-fc645e16228d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'f2392921-48f8-49d7-aea2-fc645e16228d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'f2392921-48f8-49d7-aea2-fc645e16228d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'f2392921-48f8-49d7-aea2-fc645e16228d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '2963e562-891c-456e-a461-d7ea9174febe') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '2963e562-891c-456e-a461-d7ea9174febe') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '2963e562-891c-456e-a461-d7ea9174febe') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '8ea18cba-d416-4281-9bc8-af9552a87689') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '8ea18cba-d416-4281-9bc8-af9552a87689') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '8ea18cba-d416-4281-9bc8-af9552a87689') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '8ea18cba-d416-4281-9bc8-af9552a87689') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', 'bd086043-40ad-4712-ab61-0b1590be9485') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'bd086043-40ad-4712-ab61-0b1590be9485') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', 'a833d90f-8823-4a43-adba-0e8cc092a98e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', 'a833d90f-8823-4a43-adba-0e8cc092a98e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a833d90f-8823-4a43-adba-0e8cc092a98e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', 'a833d90f-8823-4a43-adba-0e8cc092a98e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('1f14ba08-b71f-4f00-b2a4-a9b6ae25e420', 'b27ab19e-d197-4740-bbb9-e30535e44cac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'b27ab19e-d197-4740-bbb9-e30535e44cac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'b27ab19e-d197-4740-bbb9-e30535e44cac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1000c08-c02e-421c-ad34-a81836d1d053', '69be0953-8919-475f-a917-0515f261d421') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('f810f8cf-4957-4012-892a-a50cd15e7294', '69be0953-8919-475f-a917-0515f261d421') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '69be0953-8919-475f-a917-0515f261d421') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '69be0953-8919-475f-a917-0515f261d421') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '69be0953-8919-475f-a917-0515f261d421') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('ad528419-c98a-47f9-b0a2-e72ac372faa2', '1a98a66f-9057-4921-9d40-7c8054b574f7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '1a98a66f-9057-4921-9d40-7c8054b574f7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '1a98a66f-9057-4921-9d40-7c8054b574f7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '1a98a66f-9057-4921-9d40-7c8054b574f7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', 'b88022e2-6c10-4133-92ca-818d25168c34') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'b88022e2-6c10-4133-92ca-818d25168c34') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', 'b88022e2-6c10-4133-92ca-818d25168c34') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', '3a43a2a4-1c7d-494a-b579-ec40bd54ae1d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '3a43a2a4-1c7d-494a-b579-ec40bd54ae1d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '3a43a2a4-1c7d-494a-b579-ec40bd54ae1d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '3a43a2a4-1c7d-494a-b579-ec40bd54ae1d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '590db4c5-efa3-4a2a-a843-d5284b0ae3ed') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '590db4c5-efa3-4a2a-a843-d5284b0ae3ed') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '590db4c5-efa3-4a2a-a843-d5284b0ae3ed') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a14ed6a2-38c9-48d7-9879-fcbda58a1653') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'a14ed6a2-38c9-48d7-9879-fcbda58a1653') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', 'fc0914c5-38f3-47f9-a0f5-6f356e997d66') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', 'fc0914c5-38f3-47f9-a0f5-6f356e997d66') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'fc0914c5-38f3-47f9-a0f5-6f356e997d66') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'fc0914c5-38f3-47f9-a0f5-6f356e997d66') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '6347b395-430f-4724-ad78-58551eaca8f3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'f21180bf-2ac2-4881-b979-7e4be312a7b1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'f21180bf-2ac2-4881-b979-7e4be312a7b1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '97654d06-b860-4644-9054-05c09f04f259') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '97654d06-b860-4644-9054-05c09f04f259') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '8e7a984a-c091-4ec9-b529-12cab33fa494') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '8e7a984a-c091-4ec9-b529-12cab33fa494') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '8e7a984a-c091-4ec9-b529-12cab33fa494') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('634b4962-9bf6-444e-84c7-5e54d8655ba4', '82c76098-e4f2-489b-b87d-098cbfc92d08') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', '82c76098-e4f2-489b-b87d-098cbfc92d08') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', '82c76098-e4f2-489b-b87d-098cbfc92d08') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '82c76098-e4f2-489b-b87d-098cbfc92d08') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '64d4520d-4d0a-4bed-b9cc-1b3210b1f8bb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '64d4520d-4d0a-4bed-b9cc-1b3210b1f8bb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', '6f5a74bd-6f89-47d2-8eb1-3f0c09eb27ac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', '6f5a74bd-6f89-47d2-8eb1-3f0c09eb27ac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', '6f5a74bd-6f89-47d2-8eb1-3f0c09eb27ac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '6f5a74bd-6f89-47d2-8eb1-3f0c09eb27ac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', '252cac46-b5e5-4917-9737-f8fb468afaa9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', '252cac46-b5e5-4917-9737-f8fb468afaa9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', '252cac46-b5e5-4917-9737-f8fb468afaa9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '252cac46-b5e5-4917-9737-f8fb468afaa9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '97412c7e-d2e3-4019-b1ef-76b3ebcc4bcf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '97412c7e-d2e3-4019-b1ef-76b3ebcc4bcf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '97412c7e-d2e3-4019-b1ef-76b3ebcc4bcf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', '20083dc8-cbe0-45dd-b713-c3a2a63faa94') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '20083dc8-cbe0-45dd-b713-c3a2a63faa94') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '20083dc8-cbe0-45dd-b713-c3a2a63faa94') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', '4a8970d4-e043-43ee-b122-79df6d8d0201') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '4a8970d4-e043-43ee-b122-79df6d8d0201') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('338fcc4b-2b2c-4312-8de9-58ccd249a028', '1b07929e-e312-4a84-a39a-f7fe09639262') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '1b07929e-e312-4a84-a39a-f7fe09639262') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '1b07929e-e312-4a84-a39a-f7fe09639262') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', '35e73f06-3d7e-4f6d-88c6-86ac5c40f64d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '35e73f06-3d7e-4f6d-88c6-86ac5c40f64d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', '30713479-8e72-4bba-84b3-6eaa3f7f6008') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('297fd449-1e9a-461b-8014-48f08fb16aa5', '30713479-8e72-4bba-84b3-6eaa3f7f6008') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '30713479-8e72-4bba-84b3-6eaa3f7f6008') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '30713479-8e72-4bba-84b3-6eaa3f7f6008') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', '6afb64d9-e319-4e32-95fd-7d8aad4d0af2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('e4ea26ce-1444-41be-9342-f085f615f9a7', '6afb64d9-e319-4e32-95fd-7d8aad4d0af2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '6afb64d9-e319-4e32-95fd-7d8aad4d0af2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6afb64d9-e319-4e32-95fd-7d8aad4d0af2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('3b8d0f19-9588-4e45-b038-77cba49803c0', 'f56c182b-95f4-47c9-9d59-91e43ebc3c79') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'f56c182b-95f4-47c9-9d59-91e43ebc3c79') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'f56c182b-95f4-47c9-9d59-91e43ebc3c79') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'f56c182b-95f4-47c9-9d59-91e43ebc3c79') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', '6cafa98a-3b08-4460-a21c-cb25b8afa83e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('1f14ba08-b71f-4f00-b2a4-a9b6ae25e420', 'ba099964-2709-4907-9644-4e0d0cd5fd30') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'ba099964-2709-4907-9644-4e0d0cd5fd30') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '77c73388-0ddd-4907-b5b2-a056925e4a8a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '77c73388-0ddd-4907-b5b2-a056925e4a8a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '77c73388-0ddd-4907-b5b2-a056925e4a8a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('1f14ba08-b71f-4f00-b2a4-a9b6ae25e420', '977fb50e-bfd6-4fea-8aa7-8c71a7777209') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '977fb50e-bfd6-4fea-8aa7-8c71a7777209') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('338fcc4b-2b2c-4312-8de9-58ccd249a028', '60268d7e-5aaa-4553-a5fa-78b198dffc73') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '60268d7e-5aaa-4553-a5fa-78b198dffc73') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '60268d7e-5aaa-4553-a5fa-78b198dffc73') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '59fe27cb-931e-4c46-a272-0a6f6aff113f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('9195072b-0a1b-4915-bd80-10b05ad1bef0', '09584e54-ab26-4984-9c33-42891bf3326e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '09584e54-ab26-4984-9c33-42891bf3326e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '09584e54-ab26-4984-9c33-42891bf3326e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '09584e54-ab26-4984-9c33-42891bf3326e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('5b779401-bfa3-45c3-9f90-bb018ad8caec', '09584e54-ab26-4984-9c33-42891bf3326e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'e559f504-8b9a-4bba-9823-eba61794b7d5') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '8918e5df-e641-4ec3-8fa5-0112b15a5857') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '852114f4-a6e2-498e-ba3d-23afaee23052') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'd72ab90a-4cc4-437e-a7d9-4ad881ccd042') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'd72ab90a-4cc4-437e-a7d9-4ad881ccd042') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'd72ab90a-4cc4-437e-a7d9-4ad881ccd042') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', 'd72ab90a-4cc4-437e-a7d9-4ad881ccd042') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('338fcc4b-2b2c-4312-8de9-58ccd249a028', '9d763d47-1b04-40aa-9330-e55d6afb5640') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '9d763d47-1b04-40aa-9330-e55d6afb5640') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '9d763d47-1b04-40aa-9330-e55d6afb5640') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '9d763d47-1b04-40aa-9330-e55d6afb5640') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', 'ccda223b-81e7-4d9e-96e3-d0031e997b3f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'ccda223b-81e7-4d9e-96e3-d0031e997b3f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'ccda223b-81e7-4d9e-96e3-d0031e997b3f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '6332bde1-4212-4958-bf76-fcf8bc3e7892') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6332bde1-4212-4958-bf76-fcf8bc3e7892') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('618cafbb-0d29-4a94-8b0d-14d76e53b51a', '6332bde1-4212-4958-bf76-fcf8bc3e7892') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '6332bde1-4212-4958-bf76-fcf8bc3e7892') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '1cec5bce-1a6b-45e2-b5fd-a06beec2261c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '1cec5bce-1a6b-45e2-b5fd-a06beec2261c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '1cec5bce-1a6b-45e2-b5fd-a06beec2261c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '1cec5bce-1a6b-45e2-b5fd-a06beec2261c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '1cec5bce-1a6b-45e2-b5fd-a06beec2261c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c95794c9-a2af-45f8-9ece-c7f343984e60', '1cec5bce-1a6b-45e2-b5fd-a06beec2261c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '1f61f2ea-7ecc-4779-ab87-f705ecd19e30') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '1f61f2ea-7ecc-4779-ab87-f705ecd19e30') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '1f61f2ea-7ecc-4779-ab87-f705ecd19e30') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '1f61f2ea-7ecc-4779-ab87-f705ecd19e30') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', 'af748daa-e6e1-4fe5-805a-6cfb4979f58e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'af748daa-e6e1-4fe5-805a-6cfb4979f58e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('ae80ccd8-f2be-4785-b08b-c13c59f6cf84', 'af748daa-e6e1-4fe5-805a-6cfb4979f58e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'af748daa-e6e1-4fe5-805a-6cfb4979f58e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('618cafbb-0d29-4a94-8b0d-14d76e53b51a', 'f79d7003-0acb-4289-8b1f-cf6ee3aa81b9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'f79d7003-0acb-4289-8b1f-cf6ee3aa81b9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'f79d7003-0acb-4289-8b1f-cf6ee3aa81b9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', 'f79d7003-0acb-4289-8b1f-cf6ee3aa81b9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('57ed199d-56d3-4308-bda1-3d7b7bf785c3', 'b493b28b-c86c-4623-ac56-0cc42cda3cd9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'b493b28b-c86c-4623-ac56-0cc42cda3cd9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'b493b28b-c86c-4623-ac56-0cc42cda3cd9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c95794c9-a2af-45f8-9ece-c7f343984e60', 'b493b28b-c86c-4623-ac56-0cc42cda3cd9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', 'ab164b35-9ec3-4d2b-8007-92081c1f1343') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'ab164b35-9ec3-4d2b-8007-92081c1f1343') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', 'a09e48ca-4bd7-42b5-8921-6f8b9cbe3e05') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a09e48ca-4bd7-42b5-8921-6f8b9cbe3e05') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'a09e48ca-4bd7-42b5-8921-6f8b9cbe3e05') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'a09e48ca-4bd7-42b5-8921-6f8b9cbe3e05') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '35cd3be1-3bf2-4205-aca9-616ff954b153') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '35cd3be1-3bf2-4205-aca9-616ff954b153') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '35cd3be1-3bf2-4205-aca9-616ff954b153') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', '35cd3be1-3bf2-4205-aca9-616ff954b153') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', 'dab66b71-5760-42a0-906a-07a1a50d9144') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', 'dab66b71-5760-42a0-906a-07a1a50d9144') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'dab66b71-5760-42a0-906a-07a1a50d9144') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'dab66b71-5760-42a0-906a-07a1a50d9144') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '2d151ef0-938d-4aeb-8407-f66f3b606aa4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', '2d151ef0-938d-4aeb-8407-f66f3b606aa4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '2d151ef0-938d-4aeb-8407-f66f3b606aa4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('338fcc4b-2b2c-4312-8de9-58ccd249a028', 'e25ec7c0-2652-4409-ba77-b7d01d976bd1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'e25ec7c0-2652-4409-ba77-b7d01d976bd1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'e25ec7c0-2652-4409-ba77-b7d01d976bd1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '86219681-e680-4f36-a7a9-95d281afe244') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '86219681-e680-4f36-a7a9-95d281afe244') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '86219681-e680-4f36-a7a9-95d281afe244') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '86219681-e680-4f36-a7a9-95d281afe244') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c95794c9-a2af-45f8-9ece-c7f343984e60', '86219681-e680-4f36-a7a9-95d281afe244') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('e4ea26ce-1444-41be-9342-f085f615f9a7', 'c4f8b6ff-eef0-43da-9167-0ceef9720e94') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'c4f8b6ff-eef0-43da-9167-0ceef9720e94') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'c4f8b6ff-eef0-43da-9167-0ceef9720e94') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', 'c4f8b6ff-eef0-43da-9167-0ceef9720e94') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('5b779401-bfa3-45c3-9f90-bb018ad8caec', 'a2e169ec-3450-4c8e-a1be-ad25f04a9fc9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', 'a2e169ec-3450-4c8e-a1be-ad25f04a9fc9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', 'a2e169ec-3450-4c8e-a1be-ad25f04a9fc9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5766548c-7b8c-4f51-ac1c-42a3b465613b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '5766548c-7b8c-4f51-ac1c-42a3b465613b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '5766548c-7b8c-4f51-ac1c-42a3b465613b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '95b13530-00b8-44d2-a5ec-a4107aa432cc') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '95b13530-00b8-44d2-a5ec-a4107aa432cc') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '95b13530-00b8-44d2-a5ec-a4107aa432cc') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '8c6259cb-9198-42e0-b84c-69ba32830aa6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '8c6259cb-9198-42e0-b84c-69ba32830aa6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '8c6259cb-9198-42e0-b84c-69ba32830aa6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '64003b38-b495-4e6f-b5d9-1e97ef6829d7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '64003b38-b495-4e6f-b5d9-1e97ef6829d7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '64003b38-b495-4e6f-b5d9-1e97ef6829d7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '64003b38-b495-4e6f-b5d9-1e97ef6829d7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', '2dcdd4a8-4c6d-4def-8268-4726be585821') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '2dcdd4a8-4c6d-4def-8268-4726be585821') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b533527-e232-42d6-9d50-686266095a6d', '2dcdd4a8-4c6d-4def-8268-4726be585821') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '2dcdd4a8-4c6d-4def-8268-4726be585821') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '2dcdd4a8-4c6d-4def-8268-4726be585821') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', '98ff28fb-ab4c-4f99-8f7e-10e7d71113ea') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '98ff28fb-ab4c-4f99-8f7e-10e7d71113ea') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b533527-e232-42d6-9d50-686266095a6d', '98ff28fb-ab4c-4f99-8f7e-10e7d71113ea') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '98ff28fb-ab4c-4f99-8f7e-10e7d71113ea') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '063a13a8-0dcd-4d5b-9191-24cd426b17ed') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '063a13a8-0dcd-4d5b-9191-24cd426b17ed') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '063a13a8-0dcd-4d5b-9191-24cd426b17ed') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '03650e7d-8909-4608-b6bf-b29abf62c689') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '03650e7d-8909-4608-b6bf-b29abf62c689') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '03650e7d-8909-4608-b6bf-b29abf62c689') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '03650e7d-8909-4608-b6bf-b29abf62c689') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '38de0f70-3e05-4f81-9e59-69d3fb27b5bc') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '38de0f70-3e05-4f81-9e59-69d3fb27b5bc') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '38de0f70-3e05-4f81-9e59-69d3fb27b5bc') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '38de0f70-3e05-4f81-9e59-69d3fb27b5bc') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', 'a3cc4d9d-e0b4-4d14-80d1-3bf2031e1ccd') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a3cc4d9d-e0b4-4d14-80d1-3bf2031e1ccd') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'a3cc4d9d-e0b4-4d14-80d1-3bf2031e1ccd') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'a3cc4d9d-e0b4-4d14-80d1-3bf2031e1ccd') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', 'a3cc4d9d-e0b4-4d14-80d1-3bf2031e1ccd') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '0ab8dd8e-c49d-4587-a94c-0840547c14f3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '0ab8dd8e-c49d-4587-a94c-0840547c14f3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('618cafbb-0d29-4a94-8b0d-14d76e53b51a', '0ab8dd8e-c49d-4587-a94c-0840547c14f3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '0ab8dd8e-c49d-4587-a94c-0840547c14f3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', '906332c9-4835-4e7a-be9f-28e242ab7837') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dcf59820-af9a-4599-9552-0154f35d42d6', '906332c9-4835-4e7a-be9f-28e242ab7837') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '906332c9-4835-4e7a-be9f-28e242ab7837') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '906332c9-4835-4e7a-be9f-28e242ab7837') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '0d63d8d3-774c-4887-abd2-ca62c3c92b7e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '0d63d8d3-774c-4887-abd2-ca62c3c92b7e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '0d63d8d3-774c-4887-abd2-ca62c3c92b7e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '5fe7c175-f7c4-461b-bcaa-a79122b26b77') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '5fe7c175-f7c4-461b-bcaa-a79122b26b77') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '5fe7c175-f7c4-461b-bcaa-a79122b26b77') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5fe7c175-f7c4-461b-bcaa-a79122b26b77') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '9cb59962-92f5-4eff-a8ed-15a5374489b8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '9cb59962-92f5-4eff-a8ed-15a5374489b8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', '9cb59962-92f5-4eff-a8ed-15a5374489b8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('5b779401-bfa3-45c3-9f90-bb018ad8caec', '9cb59962-92f5-4eff-a8ed-15a5374489b8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '9cb59962-92f5-4eff-a8ed-15a5374489b8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77b17b1f-0c74-46da-8e19-293ac88097f4', '12ee8ced-5fdf-4384-a2c6-b563e7134d60') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'a3737b0f-3683-4da7-b553-e23f73edfe3d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a3737b0f-3683-4da7-b553-e23f73edfe3d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '58f5c3d2-c359-4e9f-baf8-fc90963e89bb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', '58f5c3d2-c359-4e9f-baf8-fc90963e89bb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '58f5c3d2-c359-4e9f-baf8-fc90963e89bb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', 'b03c58f2-e195-4d8d-a599-5e0497f2810f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'b03c58f2-e195-4d8d-a599-5e0497f2810f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1000c08-c02e-421c-ad34-a81836d1d053', '72edaaad-3206-4ced-b3b9-d935405de7b1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('f810f8cf-4957-4012-892a-a50cd15e7294', '72edaaad-3206-4ced-b3b9-d935405de7b1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '72edaaad-3206-4ced-b3b9-d935405de7b1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '72edaaad-3206-4ced-b3b9-d935405de7b1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', 'cf38457d-91a5-491b-89e6-d24029a8a6a5') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'cf38457d-91a5-491b-89e6-d24029a8a6a5') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('338fcc4b-2b2c-4312-8de9-58ccd249a028', '5ee085a9-3861-4f00-9b2a-9644feb13f08') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5ee085a9-3861-4f00-9b2a-9644feb13f08') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6a5b9d23-5f38-41be-992b-62d613842634') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '6a5b9d23-5f38-41be-992b-62d613842634') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '6a5b9d23-5f38-41be-992b-62d613842634') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '70f36e73-251b-445a-9af4-a0a96da80ee4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '49dc7465-7dd5-4f1e-8f52-12a80c3f382c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', 'c1b69a04-f42b-4162-afbb-6f838065da85') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'c1b69a04-f42b-4162-afbb-6f838065da85') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', 'c1b69a04-f42b-4162-afbb-6f838065da85') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '4986e524-a387-431b-98c5-397a708b3ea1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '4986e524-a387-431b-98c5-397a708b3ea1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '4986e524-a387-431b-98c5-397a708b3ea1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '4986e524-a387-431b-98c5-397a708b3ea1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('f810f8cf-4957-4012-892a-a50cd15e7294', '14244dab-1757-4dca-a0ad-70ef22f8b0fd') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '14244dab-1757-4dca-a0ad-70ef22f8b0fd') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', '4e10d8e3-829b-48c0-8c9d-8183063d1b82') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '4e10d8e3-829b-48c0-8c9d-8183063d1b82') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '4e10d8e3-829b-48c0-8c9d-8183063d1b82') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '4e10d8e3-829b-48c0-8c9d-8183063d1b82') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '717a1103-1d28-4759-aa60-d025edbb96ed') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '717a1103-1d28-4759-aa60-d025edbb96ed') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '717a1103-1d28-4759-aa60-d025edbb96ed') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '717a1103-1d28-4759-aa60-d025edbb96ed') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '0f5d835d-d1ed-465f-8994-4893c8f6aa23') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '0f5d835d-d1ed-465f-8994-4893c8f6aa23') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '0f5d835d-d1ed-465f-8994-4893c8f6aa23') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('374736cf-3d8d-4ffc-849f-89efd55ee243', '0f5d835d-d1ed-465f-8994-4893c8f6aa23') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '77a1edc7-a5d1-4192-9002-c712b24fd445') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5a54dfa0-65b9-4e74-b4b5-8d3ba03c18c4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '5a54dfa0-65b9-4e74-b4b5-8d3ba03c18c4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '5a54dfa0-65b9-4e74-b4b5-8d3ba03c18c4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '5a54dfa0-65b9-4e74-b4b5-8d3ba03c18c4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '02ec7c51-3bfd-42ae-ac34-b9bc0fba203c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '02ec7c51-3bfd-42ae-ac34-b9bc0fba203c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'a8c7ed2d-f0d5-4572-a7c4-3c37fea4e6bd') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', 'a8c7ed2d-f0d5-4572-a7c4-3c37fea4e6bd') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a8c7ed2d-f0d5-4572-a7c4-3c37fea4e6bd') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'a8c7ed2d-f0d5-4572-a7c4-3c37fea4e6bd') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', 'a8c7ed2d-f0d5-4572-a7c4-3c37fea4e6bd') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '5a626302-85a7-495f-bd46-872e740bf4bf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5a626302-85a7-495f-bd46-872e740bf4bf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1000c08-c02e-421c-ad34-a81836d1d053', 'b9203d3a-dd72-4b20-adae-351a1330ee62') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('f810f8cf-4957-4012-892a-a50cd15e7294', 'b9203d3a-dd72-4b20-adae-351a1330ee62') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'b9203d3a-dd72-4b20-adae-351a1330ee62') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'b9203d3a-dd72-4b20-adae-351a1330ee62') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '8eeedfb1-2b0b-4a5b-9bc4-e5036300503f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '8eeedfb1-2b0b-4a5b-9bc4-e5036300503f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '2d434677-7947-4868-8795-c1798fa57c26') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '2d434677-7947-4868-8795-c1798fa57c26') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '2d434677-7947-4868-8795-c1798fa57c26') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '2d434677-7947-4868-8795-c1798fa57c26') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '87168e5f-903a-403e-a0fa-b101de3f6a30') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '87168e5f-903a-403e-a0fa-b101de3f6a30') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '87168e5f-903a-403e-a0fa-b101de3f6a30') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '7248654e-c897-4cd7-a75d-c6a62d445547') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '7248654e-c897-4cd7-a75d-c6a62d445547') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '7248654e-c897-4cd7-a75d-c6a62d445547') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '7248654e-c897-4cd7-a75d-c6a62d445547') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '7248654e-c897-4cd7-a75d-c6a62d445547') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'a79d6d94-b4be-4533-b4d0-353884b443a3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', 'a79d6d94-b4be-4533-b4d0-353884b443a3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', 'a79d6d94-b4be-4533-b4d0-353884b443a3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', 'a79d6d94-b4be-4533-b4d0-353884b443a3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a79d6d94-b4be-4533-b4d0-353884b443a3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', '15729dee-2327-4fa7-9c97-3ae0d0181674') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('5b779401-bfa3-45c3-9f90-bb018ad8caec', '15729dee-2327-4fa7-9c97-3ae0d0181674') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '15729dee-2327-4fa7-9c97-3ae0d0181674') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '0f136ff2-5ef3-4608-9825-d2455e90991d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '0f136ff2-5ef3-4608-9825-d2455e90991d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '500f3a05-d88b-450f-895a-03f16371b0c1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '500f3a05-d88b-450f-895a-03f16371b0c1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '5ef447dc-74b7-4a11-8102-55157e99ccd7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5ef447dc-74b7-4a11-8102-55157e99ccd7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('3b8d0f19-9588-4e45-b038-77cba49803c0', '2413469c-1902-49cf-b9dc-a055d2b21bd1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '2413469c-1902-49cf-b9dc-a055d2b21bd1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '2413469c-1902-49cf-b9dc-a055d2b21bd1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '2413469c-1902-49cf-b9dc-a055d2b21bd1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '3b4f091f-820a-4602-8c25-ba7ac02d0e8e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '3b4f091f-820a-4602-8c25-ba7ac02d0e8e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '1de638bd-2c03-4085-9a80-48bc2d53aeae') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '1de638bd-2c03-4085-9a80-48bc2d53aeae') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '1de638bd-2c03-4085-9a80-48bc2d53aeae') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '1de638bd-2c03-4085-9a80-48bc2d53aeae') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '1f15dbd6-fafe-4a25-bbde-26b05ba5ab64') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '1f15dbd6-fafe-4a25-bbde-26b05ba5ab64') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '1f15dbd6-fafe-4a25-bbde-26b05ba5ab64') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '1bb913cc-4e88-44f9-970b-8ac7822d330d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '0a4fcbfb-2113-46ad-a79b-2fe4641eda6f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '0a4fcbfb-2113-46ad-a79b-2fe4641eda6f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '0a4fcbfb-2113-46ad-a79b-2fe4641eda6f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '0a4fcbfb-2113-46ad-a79b-2fe4641eda6f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', 'd1dd90f4-0e5b-427b-8bf5-d50db9159482') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'd1dd90f4-0e5b-427b-8bf5-d50db9159482') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'd1dd90f4-0e5b-427b-8bf5-d50db9159482') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'd1dd90f4-0e5b-427b-8bf5-d50db9159482') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'db0db8b5-9414-4577-952b-43776ca28368') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', 'd40a2f07-9dfb-48e4-ad34-f6ffb8cb4287') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', 'd40a2f07-9dfb-48e4-ad34-f6ffb8cb4287') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'd40a2f07-9dfb-48e4-ad34-f6ffb8cb4287') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '02dd47a8-9754-4c9e-9421-832f4d5f44c2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '02dd47a8-9754-4c9e-9421-832f4d5f44c2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '02dd47a8-9754-4c9e-9421-832f4d5f44c2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77b17b1f-0c74-46da-8e19-293ac88097f4', '02dd47a8-9754-4c9e-9421-832f4d5f44c2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'aef74eca-0898-46f5-a5b1-632cae970d7d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('3b8d0f19-9588-4e45-b038-77cba49803c0', '2d05b5c0-f7e5-4a56-ba3c-6f946c806616') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '2d05b5c0-f7e5-4a56-ba3c-6f946c806616') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '2d05b5c0-f7e5-4a56-ba3c-6f946c806616') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '8328f618-7188-41e6-ba9b-40da53ecad27') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '7b806197-85dc-40d8-b38f-4e6bf1ec5ae0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '7b806197-85dc-40d8-b38f-4e6bf1ec5ae0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', '7b806197-85dc-40d8-b38f-4e6bf1ec5ae0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', 'a3057c60-14c0-4414-809e-d974c4e3b8a5') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', 'a3057c60-14c0-4414-809e-d974c4e3b8a5') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a3057c60-14c0-4414-809e-d974c4e3b8a5') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('9195072b-0a1b-4915-bd80-10b05ad1bef0', '98caf9dd-d89b-410a-ab52-0627d139ddf8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '98caf9dd-d89b-410a-ab52-0627d139ddf8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '98caf9dd-d89b-410a-ab52-0627d139ddf8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '98caf9dd-d89b-410a-ab52-0627d139ddf8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('ad528419-c98a-47f9-b0a2-e72ac372faa2', '937fb8db-9d3c-4cef-81b0-2df0be46824b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '937fb8db-9d3c-4cef-81b0-2df0be46824b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('ad528419-c98a-47f9-b0a2-e72ac372faa2', '9b8a96b2-a0c7-4ec9-b985-1d84321f26c5') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '9b8a96b2-a0c7-4ec9-b985-1d84321f26c5') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '9b8a96b2-a0c7-4ec9-b985-1d84321f26c5') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '1acca48a-ed55-4656-afa5-edae4bf70c2e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '1acca48a-ed55-4656-afa5-edae4bf70c2e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '1acca48a-ed55-4656-afa5-edae4bf70c2e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6947079a-1d22-466d-a095-a3da8747f6c1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '4ad8385f-b5f9-4837-8e3c-382975aa5bc9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '4ad8385f-b5f9-4837-8e3c-382975aa5bc9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '4ad8385f-b5f9-4837-8e3c-382975aa5bc9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'f75db770-a6ac-4533-955e-29b832f1a03d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'f75db770-a6ac-4533-955e-29b832f1a03d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'f75db770-a6ac-4533-955e-29b832f1a03d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', 'f75db770-a6ac-4533-955e-29b832f1a03d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('57ed199d-56d3-4308-bda1-3d7b7bf785c3', '90e770a8-f127-4a0f-9372-4b2152306726') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77b17b1f-0c74-46da-8e19-293ac88097f4', '90e770a8-f127-4a0f-9372-4b2152306726') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', '90e770a8-f127-4a0f-9372-4b2152306726') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '90e770a8-f127-4a0f-9372-4b2152306726') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '90e770a8-f127-4a0f-9372-4b2152306726') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', 'd4992212-45be-440c-940d-bbf49328a670') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'd4992212-45be-440c-940d-bbf49328a670') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', 'd4992212-45be-440c-940d-bbf49328a670') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'd4992212-45be-440c-940d-bbf49328a670') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', 'd4992212-45be-440c-940d-bbf49328a670') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('57ed199d-56d3-4308-bda1-3d7b7bf785c3', '12b88afc-2652-4366-b8bd-b6bc165858c1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '12b88afc-2652-4366-b8bd-b6bc165858c1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '12b88afc-2652-4366-b8bd-b6bc165858c1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '12b88afc-2652-4366-b8bd-b6bc165858c1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '12b88afc-2652-4366-b8bd-b6bc165858c1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('9195072b-0a1b-4915-bd80-10b05ad1bef0', '14f63889-eced-4f22-a677-0a5976e574e2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '14f63889-eced-4f22-a677-0a5976e574e2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '14f63889-eced-4f22-a677-0a5976e574e2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '57639e08-48ea-474b-99dd-387d34520dcb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '57639e08-48ea-474b-99dd-387d34520dcb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '57639e08-48ea-474b-99dd-387d34520dcb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '99e28aba-91f1-4b15-ae03-149e33009e79') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', 'bf9a3e7a-4aa0-4539-8ffd-430e57a5c89c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b533527-e232-42d6-9d50-686266095a6d', 'bf9a3e7a-4aa0-4539-8ffd-430e57a5c89c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', '60af3c04-3c66-4524-ad49-611d9cae89f9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '60af3c04-3c66-4524-ad49-611d9cae89f9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '60af3c04-3c66-4524-ad49-611d9cae89f9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '60af3c04-3c66-4524-ad49-611d9cae89f9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '06854eca-e16c-4cad-b936-3701870f1706') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', '06854eca-e16c-4cad-b936-3701870f1706') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '06854eca-e16c-4cad-b936-3701870f1706') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', '6dcc6c21-b647-4fa0-be32-e911c274ad63') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', '6dcc6c21-b647-4fa0-be32-e911c274ad63') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', '6dcc6c21-b647-4fa0-be32-e911c274ad63') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6dcc6c21-b647-4fa0-be32-e911c274ad63') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', 'b1405c53-a14e-45f1-8916-e511f6f81b7b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'b1405c53-a14e-45f1-8916-e511f6f81b7b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'b1405c53-a14e-45f1-8916-e511f6f81b7b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('ae80ccd8-f2be-4785-b08b-c13c59f6cf84', 'b1405c53-a14e-45f1-8916-e511f6f81b7b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('3b8d0f19-9588-4e45-b038-77cba49803c0', '8eba8f4c-5e07-4908-8c15-27bbe338b2ac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', '8eba8f4c-5e07-4908-8c15-27bbe338b2ac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', '8eba8f4c-5e07-4908-8c15-27bbe338b2ac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '8eba8f4c-5e07-4908-8c15-27bbe338b2ac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '8eba8f4c-5e07-4908-8c15-27bbe338b2ac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '8eba8f4c-5e07-4908-8c15-27bbe338b2ac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', '9e241979-b013-4774-b21b-b8ecfe153981') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b533527-e232-42d6-9d50-686266095a6d', '9e241979-b013-4774-b21b-b8ecfe153981') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '9e241979-b013-4774-b21b-b8ecfe153981') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '9e241979-b013-4774-b21b-b8ecfe153981') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('f810f8cf-4957-4012-892a-a50cd15e7294', 'c945dc51-b468-4293-a6f7-cc487a67c7ac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', 'c945dc51-b468-4293-a6f7-cc487a67c7ac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'c945dc51-b468-4293-a6f7-cc487a67c7ac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'c945dc51-b468-4293-a6f7-cc487a67c7ac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('67f9a398-4dd3-4cc5-8e72-8f3f2e65a436', '051d0aad-50d8-4ce2-a9af-67c53119a85a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('9195072b-0a1b-4915-bd80-10b05ad1bef0', '9da950b0-221a-46ef-bdac-5c938c6e6e69') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('338fcc4b-2b2c-4312-8de9-58ccd249a028', '9da950b0-221a-46ef-bdac-5c938c6e6e69') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('ad528419-c98a-47f9-b0a2-e72ac372faa2', '9da950b0-221a-46ef-bdac-5c938c6e6e69') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '9da950b0-221a-46ef-bdac-5c938c6e6e69') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '9da950b0-221a-46ef-bdac-5c938c6e6e69') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '9da950b0-221a-46ef-bdac-5c938c6e6e69') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'd81599b5-0b57-4328-9140-2887c76fd6dc') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '6a12546b-afcb-4c0e-9c94-4dc4846c86b0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6a12546b-afcb-4c0e-9c94-4dc4846c86b0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('67f9a398-4dd3-4cc5-8e72-8f3f2e65a436', '6a12546b-afcb-4c0e-9c94-4dc4846c86b0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '6a12546b-afcb-4c0e-9c94-4dc4846c86b0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', '6a12546b-afcb-4c0e-9c94-4dc4846c86b0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('338fcc4b-2b2c-4312-8de9-58ccd249a028', '04eb0410-6ab0-4795-be9c-163606fc8e25') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '04eb0410-6ab0-4795-be9c-163606fc8e25') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '04eb0410-6ab0-4795-be9c-163606fc8e25') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '04eb0410-6ab0-4795-be9c-163606fc8e25') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '04eb0410-6ab0-4795-be9c-163606fc8e25') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '91c13e24-d069-45d8-8780-420224dc2b44') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', '91c13e24-d069-45d8-8780-420224dc2b44') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('f810f8cf-4957-4012-892a-a50cd15e7294', '91c13e24-d069-45d8-8780-420224dc2b44') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '91c13e24-d069-45d8-8780-420224dc2b44') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'acdf7039-28fc-478d-85ad-bb02cf504817') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', 'acdf7039-28fc-478d-85ad-bb02cf504817') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '36d7b641-5f85-48ad-87d2-8c464dde5151') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '36d7b641-5f85-48ad-87d2-8c464dde5151') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '36d7b641-5f85-48ad-87d2-8c464dde5151') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('297fd449-1e9a-461b-8014-48f08fb16aa5', 'bab7c81b-7564-4b01-a9a3-2e68f78c4e02') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'bab7c81b-7564-4b01-a9a3-2e68f78c4e02') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'bab7c81b-7564-4b01-a9a3-2e68f78c4e02') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'bab7c81b-7564-4b01-a9a3-2e68f78c4e02') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '09af5ded-dbb8-4581-a283-ac51dbdd67a7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '09af5ded-dbb8-4581-a283-ac51dbdd67a7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '09af5ded-dbb8-4581-a283-ac51dbdd67a7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '09af5ded-dbb8-4581-a283-ac51dbdd67a7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '418a1f09-32a5-4671-be7b-b4df8debf47a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '418a1f09-32a5-4671-be7b-b4df8debf47a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '418a1f09-32a5-4671-be7b-b4df8debf47a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '418a1f09-32a5-4671-be7b-b4df8debf47a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('9195072b-0a1b-4915-bd80-10b05ad1bef0', '06bd0a64-02d4-4bde-9838-0423566f1399') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '06bd0a64-02d4-4bde-9838-0423566f1399') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '06bd0a64-02d4-4bde-9838-0423566f1399') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '06bd0a64-02d4-4bde-9838-0423566f1399') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', 'e1911d6a-2107-4784-9c04-ead572fd90ea') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'e1911d6a-2107-4784-9c04-ead572fd90ea') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'e1911d6a-2107-4784-9c04-ead572fd90ea') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'e1911d6a-2107-4784-9c04-ead572fd90ea') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', 'e1911d6a-2107-4784-9c04-ead572fd90ea') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', 'b8fe43d1-1869-4637-b020-b784f42ca405') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'b8fe43d1-1869-4637-b020-b784f42ca405') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'b8fe43d1-1869-4637-b020-b784f42ca405') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '3bffe299-9656-4e6f-a40d-7894b3f21e78') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('1f14ba08-b71f-4f00-b2a4-a9b6ae25e420', '3bffe299-9656-4e6f-a40d-7894b3f21e78') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '3bffe299-9656-4e6f-a40d-7894b3f21e78') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '3bffe299-9656-4e6f-a40d-7894b3f21e78') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', 'ef484a82-089f-487d-aec3-fb1e01f1f5b0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'ef484a82-089f-487d-aec3-fb1e01f1f5b0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'ef484a82-089f-487d-aec3-fb1e01f1f5b0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'ef484a82-089f-487d-aec3-fb1e01f1f5b0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6cf1f413-f32d-409a-8f41-204625f4c1fb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '6cf1f413-f32d-409a-8f41-204625f4c1fb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '6cf1f413-f32d-409a-8f41-204625f4c1fb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '1b32e0d8-bb7e-4494-89a6-ae0cf53fe346') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '1b32e0d8-bb7e-4494-89a6-ae0cf53fe346') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '1b32e0d8-bb7e-4494-89a6-ae0cf53fe346') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '3aa95840-5bd8-4545-aa03-1ed54da61a8e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('3b8d0f19-9588-4e45-b038-77cba49803c0', 'bbea8456-45b5-41fe-af35-2c0c8aa405eb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('634b4962-9bf6-444e-84c7-5e54d8655ba4', 'bbea8456-45b5-41fe-af35-2c0c8aa405eb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', 'bbea8456-45b5-41fe-af35-2c0c8aa405eb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'bbea8456-45b5-41fe-af35-2c0c8aa405eb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'bbea8456-45b5-41fe-af35-2c0c8aa405eb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '63da9b45-373a-446e-a095-b72849b28553') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '63da9b45-373a-446e-a095-b72849b28553') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '63da9b45-373a-446e-a095-b72849b28553') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '63da9b45-373a-446e-a095-b72849b28553') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', '63da9b45-373a-446e-a095-b72849b28553') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6fafab70-19a6-411c-9a37-cdd8ba4696f1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '6fafab70-19a6-411c-9a37-cdd8ba4696f1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '6fafab70-19a6-411c-9a37-cdd8ba4696f1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '6fafab70-19a6-411c-9a37-cdd8ba4696f1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', '6fafab70-19a6-411c-9a37-cdd8ba4696f1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '07e301ff-6110-4fee-bb2d-41d37fa61486') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '07e301ff-6110-4fee-bb2d-41d37fa61486') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '2aa0afbf-d52b-4284-ab74-3aaf04c59d11') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '91298d67-b518-46d3-af6d-eba7e6eac29a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '91298d67-b518-46d3-af6d-eba7e6eac29a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '91298d67-b518-46d3-af6d-eba7e6eac29a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '91298d67-b518-46d3-af6d-eba7e6eac29a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('338fcc4b-2b2c-4312-8de9-58ccd249a028', 'de695076-5285-4564-8647-64a51615cef3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'de695076-5285-4564-8647-64a51615cef3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'de695076-5285-4564-8647-64a51615cef3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '42c287d3-d5ec-4cda-be72-2163c028677b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '42c287d3-d5ec-4cda-be72-2163c028677b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '351ba11c-93f5-488a-9e68-1525822ebb84') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '351ba11c-93f5-488a-9e68-1525822ebb84') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '351ba11c-93f5-488a-9e68-1525822ebb84') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '351ba11c-93f5-488a-9e68-1525822ebb84') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '20824280-fdfe-4d43-935c-0a935f83623b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '20824280-fdfe-4d43-935c-0a935f83623b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', 'c39b9851-001c-48af-a23b-ad372c5f0a07') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'c39b9851-001c-48af-a23b-ad372c5f0a07') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('3b8d0f19-9588-4e45-b038-77cba49803c0', '6095149b-b59f-4f00-8642-9f3b79abf6cc') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '6095149b-b59f-4f00-8642-9f3b79abf6cc') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6095149b-b59f-4f00-8642-9f3b79abf6cc') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '6095149b-b59f-4f00-8642-9f3b79abf6cc') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '6095149b-b59f-4f00-8642-9f3b79abf6cc') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '301554cd-99ea-48ff-a037-5b2f77f59e3a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '301554cd-99ea-48ff-a037-5b2f77f59e3a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('1f14ba08-b71f-4f00-b2a4-a9b6ae25e420', '65d9d5ce-e0d2-4295-82a4-25fb6aa85210') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '65d9d5ce-e0d2-4295-82a4-25fb6aa85210') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '65d9d5ce-e0d2-4295-82a4-25fb6aa85210') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('1f14ba08-b71f-4f00-b2a4-a9b6ae25e420', '76a8df2c-b7a3-44fc-a5b1-592966620239') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '76a8df2c-b7a3-44fc-a5b1-592966620239') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '76a8df2c-b7a3-44fc-a5b1-592966620239') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '76a8df2c-b7a3-44fc-a5b1-592966620239') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('1f14ba08-b71f-4f00-b2a4-a9b6ae25e420', 'e356fa30-cfca-4696-b3ac-290e6ab461ab') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'e356fa30-cfca-4696-b3ac-290e6ab461ab') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'e356fa30-cfca-4696-b3ac-290e6ab461ab') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', 'e356fa30-cfca-4696-b3ac-290e6ab461ab') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('1f14ba08-b71f-4f00-b2a4-a9b6ae25e420', '5d5f7ac0-e299-4515-aaf4-12734d70f8a5') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '5d5f7ac0-e299-4515-aaf4-12734d70f8a5') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5d5f7ac0-e299-4515-aaf4-12734d70f8a5') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '5d5f7ac0-e299-4515-aaf4-12734d70f8a5') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '33858a2c-3622-4012-b5fc-b6ea33c2d3ba') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '33858a2c-3622-4012-b5fc-b6ea33c2d3ba') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '33858a2c-3622-4012-b5fc-b6ea33c2d3ba') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '33858a2c-3622-4012-b5fc-b6ea33c2d3ba') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('67f9a398-4dd3-4cc5-8e72-8f3f2e65a436', '21600875-b129-4878-bed0-84f111c863a0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '5f6b1961-350f-4c05-aa79-29139c8d1b30') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('5b779401-bfa3-45c3-9f90-bb018ad8caec', '5f6b1961-350f-4c05-aa79-29139c8d1b30') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5f6b1961-350f-4c05-aa79-29139c8d1b30') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '5f6b1961-350f-4c05-aa79-29139c8d1b30') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', 'cfd7545f-6323-4ac1-a7af-0aede709b7b1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'cfd7545f-6323-4ac1-a7af-0aede709b7b1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'cfd7545f-6323-4ac1-a7af-0aede709b7b1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', 'a3555d95-e1bb-4637-9cf7-1d552e6ef3e2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a3555d95-e1bb-4637-9cf7-1d552e6ef3e2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'a3555d95-e1bb-4637-9cf7-1d552e6ef3e2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'a3555d95-e1bb-4637-9cf7-1d552e6ef3e2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', 'a3555d95-e1bb-4637-9cf7-1d552e6ef3e2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '912fde04-b7ca-4125-961a-96e3a551c87e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '912fde04-b7ca-4125-961a-96e3a551c87e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '912fde04-b7ca-4125-961a-96e3a551c87e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '912fde04-b7ca-4125-961a-96e3a551c87e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('338fcc4b-2b2c-4312-8de9-58ccd249a028', 'db57f61c-cf27-4dce-9a36-6f577adb6e8d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', 'db57f61c-cf27-4dce-9a36-6f577adb6e8d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'db57f61c-cf27-4dce-9a36-6f577adb6e8d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', '5a5829ae-6899-4ca3-b974-405cd8639675') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5a5829ae-6899-4ca3-b974-405cd8639675') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '5a5829ae-6899-4ca3-b974-405cd8639675') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b533527-e232-42d6-9d50-686266095a6d', '0fd953c4-3658-48a5-9e65-a27279faec66') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b533527-e232-42d6-9d50-686266095a6d', '113b7f7a-e7e7-46b9-9f52-ec75c68492db') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '113b7f7a-e7e7-46b9-9f52-ec75c68492db') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '113b7f7a-e7e7-46b9-9f52-ec75c68492db') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b533527-e232-42d6-9d50-686266095a6d', '83985f5f-1dff-4692-90aa-50472fa4b9b1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '83985f5f-1dff-4692-90aa-50472fa4b9b1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '83985f5f-1dff-4692-90aa-50472fa4b9b1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('3b8d0f19-9588-4e45-b038-77cba49803c0', 'a9b7483b-c163-483d-8922-1402f65b5889') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'a9b7483b-c163-483d-8922-1402f65b5889') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'a9b7483b-c163-483d-8922-1402f65b5889') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a9b7483b-c163-483d-8922-1402f65b5889') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('57ed199d-56d3-4308-bda1-3d7b7bf785c3', 'aa447f7f-549f-40fe-989a-3619945c1b65') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6bdecd9e-b28f-433c-9644-f7da9fe2289c', 'aa447f7f-549f-40fe-989a-3619945c1b65') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'aa447f7f-549f-40fe-989a-3619945c1b65') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('1f14ba08-b71f-4f00-b2a4-a9b6ae25e420', '5da4c77a-febd-43d7-bbc5-270d8a3561a9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5da4c77a-febd-43d7-bbc5-270d8a3561a9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '5da4c77a-febd-43d7-bbc5-270d8a3561a9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '5da4c77a-febd-43d7-bbc5-270d8a3561a9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('3b8d0f19-9588-4e45-b038-77cba49803c0', '9f69b94a-18b9-470c-a6e2-1f8732f6671c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '9f69b94a-18b9-470c-a6e2-1f8732f6671c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '9f69b94a-18b9-470c-a6e2-1f8732f6671c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '9f69b94a-18b9-470c-a6e2-1f8732f6671c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6be637bd-180d-44ea-be6e-3fe635af7f4a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '6be637bd-180d-44ea-be6e-3fe635af7f4a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', 'd546d680-e6a3-4f06-aa9b-e6f9e9dbd8c3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'd546d680-e6a3-4f06-aa9b-e6f9e9dbd8c3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'ebd75475-11e9-4077-b4cc-9591ef458754') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '7f22bdd2-df9a-4c9a-82e6-ee4b2d602783') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '7f22bdd2-df9a-4c9a-82e6-ee4b2d602783') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '7f22bdd2-df9a-4c9a-82e6-ee4b2d602783') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '7f22bdd2-df9a-4c9a-82e6-ee4b2d602783') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', '7f22bdd2-df9a-4c9a-82e6-ee4b2d602783') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'd6e7de62-50c2-4329-812a-af5203622951') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'd6e7de62-50c2-4329-812a-af5203622951') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'd6e7de62-50c2-4329-812a-af5203622951') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', 'd6e7de62-50c2-4329-812a-af5203622951') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', 'd6e7de62-50c2-4329-812a-af5203622951') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', 'cfce96fc-118b-46db-89f1-5c4d7593a499') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', 'cfce96fc-118b-46db-89f1-5c4d7593a499') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'cfce96fc-118b-46db-89f1-5c4d7593a499') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'cedf33a6-46bc-402b-b498-988c71fb5fd4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'dc4bec06-5410-4827-9603-801ed6e5efb6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'dc4bec06-5410-4827-9603-801ed6e5efb6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'dc4bec06-5410-4827-9603-801ed6e5efb6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', 'dc4bec06-5410-4827-9603-801ed6e5efb6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', 'dc4bec06-5410-4827-9603-801ed6e5efb6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', '7e496706-f397-4c65-a156-c7c9edf5cb15') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '7e496706-f397-4c65-a156-c7c9edf5cb15') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '7e496706-f397-4c65-a156-c7c9edf5cb15') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '7e496706-f397-4c65-a156-c7c9edf5cb15') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', '437f119f-49ab-4fb7-8661-318ba88e8a33') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '437f119f-49ab-4fb7-8661-318ba88e8a33') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '437f119f-49ab-4fb7-8661-318ba88e8a33') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '437f119f-49ab-4fb7-8661-318ba88e8a33') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'e7ef4e42-b347-4244-8add-2d124d74e76d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', '11580607-285f-448f-895d-85eee2eeda17') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '11580607-285f-448f-895d-85eee2eeda17') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '11580607-285f-448f-895d-85eee2eeda17') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '11580607-285f-448f-895d-85eee2eeda17') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', 'a7145bf5-5609-41af-84ef-1a88d0987326') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '628faa74-5251-481a-8c71-6c7784525c31') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '628faa74-5251-481a-8c71-6c7784525c31') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '628faa74-5251-481a-8c71-6c7784525c31') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '628faa74-5251-481a-8c71-6c7784525c31') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', 'aae74af5-e58c-435c-8d85-2d32c24a7ddb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', 'aae74af5-e58c-435c-8d85-2d32c24a7ddb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'aae74af5-e58c-435c-8d85-2d32c24a7ddb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '8c5ae4c5-bd87-47a3-ba85-6fe0c4231bd6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '8c5ae4c5-bd87-47a3-ba85-6fe0c4231bd6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '8c5ae4c5-bd87-47a3-ba85-6fe0c4231bd6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '8c5ae4c5-bd87-47a3-ba85-6fe0c4231bd6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', 'b21fcf9a-1969-498a-a47e-53e7cf06ce7d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', 'b21fcf9a-1969-498a-a47e-53e7cf06ce7d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '1407cf7f-5299-4a2f-82b8-a50e5c1df406') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '1407cf7f-5299-4a2f-82b8-a50e5c1df406') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '1407cf7f-5299-4a2f-82b8-a50e5c1df406') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', '63ba4f64-1bab-4d53-97a4-58cb4223678e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '63ba4f64-1bab-4d53-97a4-58cb4223678e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '63ba4f64-1bab-4d53-97a4-58cb4223678e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '63ba4f64-1bab-4d53-97a4-58cb4223678e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '63ba4f64-1bab-4d53-97a4-58cb4223678e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b533527-e232-42d6-9d50-686266095a6d', 'f72f69e9-b9e4-4e70-abe3-d92499451323') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '141c5e8c-8b23-4db6-b3fe-b3bfa86e1d1b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '141c5e8c-8b23-4db6-b3fe-b3bfa86e1d1b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', 'ee3f8fc7-f7ad-41a6-968d-34a19357da47') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'ee3f8fc7-f7ad-41a6-968d-34a19357da47') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'ee3f8fc7-f7ad-41a6-968d-34a19357da47') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'ee3f8fc7-f7ad-41a6-968d-34a19357da47') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '526687f9-0c1e-4494-a15c-052bcad744a9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '526687f9-0c1e-4494-a15c-052bcad744a9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '526687f9-0c1e-4494-a15c-052bcad744a9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '37f90c6b-c8f1-41a2-9d45-ccfca86132f4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '37f90c6b-c8f1-41a2-9d45-ccfca86132f4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '37f90c6b-c8f1-41a2-9d45-ccfca86132f4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '37f90c6b-c8f1-41a2-9d45-ccfca86132f4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c95794c9-a2af-45f8-9ece-c7f343984e60', '37f90c6b-c8f1-41a2-9d45-ccfca86132f4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '23493bea-c053-470b-abe3-bf0b3f0336d6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '23493bea-c053-470b-abe3-bf0b3f0336d6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('57ed199d-56d3-4308-bda1-3d7b7bf785c3', '97169846-8eea-485b-bd67-c01c3375cfbc') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '97169846-8eea-485b-bd67-c01c3375cfbc') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '9c29e773-7213-43a2-b49b-f08f1f7b1605') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '9c29e773-7213-43a2-b49b-f08f1f7b1605') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '10fd121e-679b-4dbc-9493-be7b01532cd8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '10fd121e-679b-4dbc-9493-be7b01532cd8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '10fd121e-679b-4dbc-9493-be7b01532cd8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '10fd121e-679b-4dbc-9493-be7b01532cd8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '6b759b65-9244-47dd-9e48-2f8696c4df35') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('ae80ccd8-f2be-4785-b08b-c13c59f6cf84', '6b759b65-9244-47dd-9e48-2f8696c4df35') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '6b759b65-9244-47dd-9e48-2f8696c4df35') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6b759b65-9244-47dd-9e48-2f8696c4df35') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'f4981899-fa3c-400d-ab75-bd290a585bf9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'f4981899-fa3c-400d-ab75-bd290a585bf9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('57ed199d-56d3-4308-bda1-3d7b7bf785c3', '46f49b5e-b5eb-4efc-b861-4367d125fae6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '46f49b5e-b5eb-4efc-b861-4367d125fae6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '46f49b5e-b5eb-4efc-b861-4367d125fae6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '46f49b5e-b5eb-4efc-b861-4367d125fae6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6bdecd9e-b28f-433c-9644-f7da9fe2289c', 'e3bbd599-240c-4de2-a374-efe1e2651b01') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('618cafbb-0d29-4a94-8b0d-14d76e53b51a', '5b762b9d-5adb-4394-9399-6232667536e3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5b762b9d-5adb-4394-9399-6232667536e3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '89300221-e78e-42d5-93d4-4e91add9e857') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '89300221-e78e-42d5-93d4-4e91add9e857') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '89300221-e78e-42d5-93d4-4e91add9e857') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '89300221-e78e-42d5-93d4-4e91add9e857') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '3d03364f-32e7-45c3-aa2c-84d533ce0fdb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '3d03364f-32e7-45c3-aa2c-84d533ce0fdb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '3d03364f-32e7-45c3-aa2c-84d533ce0fdb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '3d03364f-32e7-45c3-aa2c-84d533ce0fdb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c95794c9-a2af-45f8-9ece-c7f343984e60', '4e1fc549-f081-45c3-aaaf-089d09fb4c95') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('374736cf-3d8d-4ffc-849f-89efd55ee243', '4e1fc549-f081-45c3-aaaf-089d09fb4c95') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '4e1fc549-f081-45c3-aaaf-089d09fb4c95') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '4e1fc549-f081-45c3-aaaf-089d09fb4c95') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '4e1fc549-f081-45c3-aaaf-089d09fb4c95') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('3b8d0f19-9588-4e45-b038-77cba49803c0', '5d869f76-26c2-46cc-80bc-efe046961bc7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '5d869f76-26c2-46cc-80bc-efe046961bc7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5d869f76-26c2-46cc-80bc-efe046961bc7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', '5d869f76-26c2-46cc-80bc-efe046961bc7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('5b779401-bfa3-45c3-9f90-bb018ad8caec', '5d869f76-26c2-46cc-80bc-efe046961bc7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('3b8d0f19-9588-4e45-b038-77cba49803c0', '0a1fdc09-8e2c-4a7e-82fc-4b7ad7d5bdc3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '0a1fdc09-8e2c-4a7e-82fc-4b7ad7d5bdc3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '0a1fdc09-8e2c-4a7e-82fc-4b7ad7d5bdc3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '0a1fdc09-8e2c-4a7e-82fc-4b7ad7d5bdc3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', '0a1fdc09-8e2c-4a7e-82fc-4b7ad7d5bdc3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '6fa06ea9-3fba-4282-8533-15317d7899e2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '6fa06ea9-3fba-4282-8533-15317d7899e2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '6fa06ea9-3fba-4282-8533-15317d7899e2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('ae80ccd8-f2be-4785-b08b-c13c59f6cf84', '6fa06ea9-3fba-4282-8533-15317d7899e2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '276701aa-e4c1-44a0-a835-6aea3de7204b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '276701aa-e4c1-44a0-a835-6aea3de7204b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', '43b3e89e-4734-4574-bfeb-e2c54d035061') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '43b3e89e-4734-4574-bfeb-e2c54d035061') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '43b3e89e-4734-4574-bfeb-e2c54d035061') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '43b3e89e-4734-4574-bfeb-e2c54d035061') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '057a319b-0df3-4bca-8386-065995857228') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '057a319b-0df3-4bca-8386-065995857228') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '057a319b-0df3-4bca-8386-065995857228') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '057a319b-0df3-4bca-8386-065995857228') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('57ed199d-56d3-4308-bda1-3d7b7bf785c3', 'd74001dc-be13-42d5-9eff-2e0777ac10d7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6bdecd9e-b28f-433c-9644-f7da9fe2289c', 'd74001dc-be13-42d5-9eff-2e0777ac10d7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77b17b1f-0c74-46da-8e19-293ac88097f4', 'd74001dc-be13-42d5-9eff-2e0777ac10d7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'd74001dc-be13-42d5-9eff-2e0777ac10d7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('57ed199d-56d3-4308-bda1-3d7b7bf785c3', '7acdea33-4023-451d-8b57-4fa3a44f1276') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '7acdea33-4023-451d-8b57-4fa3a44f1276') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '23b94894-12fd-4c60-8c22-8b57c28c027b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '23b94894-12fd-4c60-8c22-8b57c28c027b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '23b94894-12fd-4c60-8c22-8b57c28c027b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', 'fbf36867-482a-40a1-a7d8-1b31f2087895') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'fbf36867-482a-40a1-a7d8-1b31f2087895') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '6b555915-75f5-400a-91b0-d2b4187b5b2a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '6b555915-75f5-400a-91b0-d2b4187b5b2a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6b555915-75f5-400a-91b0-d2b4187b5b2a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '79de7c55-4843-49c8-8bcb-cec8be9b9427') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '29abd3d1-49b7-407c-bea4-bfcf39f044ac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '99775359-37b6-45fa-b55a-ecc4da6990d9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '99775359-37b6-45fa-b55a-ecc4da6990d9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '99775359-37b6-45fa-b55a-ecc4da6990d9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '4c2e42dc-3d55-425e-b719-cc791335a0eb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '2aad44f7-6baf-4eef-b7a9-6b342362a3b4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '2aad44f7-6baf-4eef-b7a9-6b342362a3b4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '2aad44f7-6baf-4eef-b7a9-6b342362a3b4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '25cd5652-e169-4c72-b84c-43427caa536a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '25cd5652-e169-4c72-b84c-43427caa536a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '25cd5652-e169-4c72-b84c-43427caa536a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '25cd5652-e169-4c72-b84c-43427caa536a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '499727df-68a8-4179-875c-b5fea3dcdf9c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('3b8d0f19-9588-4e45-b038-77cba49803c0', '1860790d-35fe-436d-af6b-728926f46234') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '1860790d-35fe-436d-af6b-728926f46234') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '1860790d-35fe-436d-af6b-728926f46234') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', '743e6dc0-58fc-4c3e-a23c-a313fce44173') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'c412fdfb-95bf-4a02-b2c7-ee99cd38fdac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '6f68a592-9bae-48d9-898f-b0f166ce8e86') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '6f68a592-9bae-48d9-898f-b0f166ce8e86') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6f68a592-9bae-48d9-898f-b0f166ce8e86') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('338fcc4b-2b2c-4312-8de9-58ccd249a028', '625e9786-84b5-425b-abe7-19e63e0facf1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '625e9786-84b5-425b-abe7-19e63e0facf1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '625e9786-84b5-425b-abe7-19e63e0facf1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '625e9786-84b5-425b-abe7-19e63e0facf1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '256e5f58-5001-4295-a650-eebc3e1f8ee8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('ae80ccd8-f2be-4785-b08b-c13c59f6cf84', '256e5f58-5001-4295-a650-eebc3e1f8ee8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', '256e5f58-5001-4295-a650-eebc3e1f8ee8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '256e5f58-5001-4295-a650-eebc3e1f8ee8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '82e16fab-095d-4a2b-8cc1-a5847226ad46') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77b17b1f-0c74-46da-8e19-293ac88097f4', '57116326-0a8c-4880-8629-6fde4217477b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('618cafbb-0d29-4a94-8b0d-14d76e53b51a', '57116326-0a8c-4880-8629-6fde4217477b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', '57116326-0a8c-4880-8629-6fde4217477b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '57116326-0a8c-4880-8629-6fde4217477b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'b0e9906c-2a32-4da9-8d24-971e32e04842') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'b0e9906c-2a32-4da9-8d24-971e32e04842') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '6e500d95-8144-4b7a-93fc-55570db3990e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6e500d95-8144-4b7a-93fc-55570db3990e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '6e500d95-8144-4b7a-93fc-55570db3990e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '6e500d95-8144-4b7a-93fc-55570db3990e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '865b39d3-10af-41ad-85b1-9136c5e89cd6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('57ed199d-56d3-4308-bda1-3d7b7bf785c3', '94f18e08-d7c2-4940-b6f4-ec5200c8ab57') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '94f18e08-d7c2-4940-b6f4-ec5200c8ab57') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '6b51a14a-09ff-4799-8e0c-859d3b48ed1c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '6b51a14a-09ff-4799-8e0c-859d3b48ed1c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '6b51a14a-09ff-4799-8e0c-859d3b48ed1c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6b51a14a-09ff-4799-8e0c-859d3b48ed1c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', '19c83f75-e5a6-425f-a9a0-36fe4ff4d850') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', '19c83f75-e5a6-425f-a9a0-36fe4ff4d850') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '19c83f75-e5a6-425f-a9a0-36fe4ff4d850') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '19c83f75-e5a6-425f-a9a0-36fe4ff4d850') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('57ed199d-56d3-4308-bda1-3d7b7bf785c3', 'c7a84a30-f032-4cb8-bb7d-0adb2e900cc9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'c7a84a30-f032-4cb8-bb7d-0adb2e900cc9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'c7a84a30-f032-4cb8-bb7d-0adb2e900cc9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('57ed199d-56d3-4308-bda1-3d7b7bf785c3', '5723b66f-014d-4f37-a5da-66fcd036bb8d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5723b66f-014d-4f37-a5da-66fcd036bb8d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('e4ea26ce-1444-41be-9342-f085f615f9a7', '9b568029-5b03-4e45-860e-854f382cdcc3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '9b568029-5b03-4e45-860e-854f382cdcc3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', '9b568029-5b03-4e45-860e-854f382cdcc3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', 'bc07acdd-a9da-4d14-9a53-910df7364b9f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'bc07acdd-a9da-4d14-9a53-910df7364b9f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'bc07acdd-a9da-4d14-9a53-910df7364b9f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '28cad9f5-b82b-4c6e-b5b5-136ef8a31b3e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '28cad9f5-b82b-4c6e-b5b5-136ef8a31b3e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '28cad9f5-b82b-4c6e-b5b5-136ef8a31b3e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '59e489cb-20a3-4f23-9116-ba31e4a2a06a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '59e489cb-20a3-4f23-9116-ba31e4a2a06a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '59e489cb-20a3-4f23-9116-ba31e4a2a06a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '59e489cb-20a3-4f23-9116-ba31e4a2a06a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '59e489cb-20a3-4f23-9116-ba31e4a2a06a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', 'b46e8c2d-de26-4e7c-befd-32994f55bb4a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'b46e8c2d-de26-4e7c-befd-32994f55bb4a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'b46e8c2d-de26-4e7c-befd-32994f55bb4a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('3b8d0f19-9588-4e45-b038-77cba49803c0', '5717372d-86b6-4a5d-984e-abc5f48042f8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', '5717372d-86b6-4a5d-984e-abc5f48042f8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('634b4962-9bf6-444e-84c7-5e54d8655ba4', '5717372d-86b6-4a5d-984e-abc5f48042f8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '5717372d-86b6-4a5d-984e-abc5f48042f8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5717372d-86b6-4a5d-984e-abc5f48042f8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', '654f5433-ac08-4907-b9ac-e95743cb9b9e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', '654f5433-ac08-4907-b9ac-e95743cb9b9e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '654f5433-ac08-4907-b9ac-e95743cb9b9e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '654f5433-ac08-4907-b9ac-e95743cb9b9e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'e97273b1-209d-4828-957f-f32ad0dfc2ea') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', 'fd4f9e2f-3278-41f2-968f-90ae4d26982a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('5b779401-bfa3-45c3-9f90-bb018ad8caec', 'fd4f9e2f-3278-41f2-968f-90ae4d26982a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'fd4f9e2f-3278-41f2-968f-90ae4d26982a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'fd4f9e2f-3278-41f2-968f-90ae4d26982a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '906fc230-b0f9-46b5-a2ad-e0faf9832843') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '906fc230-b0f9-46b5-a2ad-e0faf9832843') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '906fc230-b0f9-46b5-a2ad-e0faf9832843') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5321ee09-3ce6-4bad-b913-3f6276dc4653') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '5321ee09-3ce6-4bad-b913-3f6276dc4653') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('67f9a398-4dd3-4cc5-8e72-8f3f2e65a436', 'b4bc9693-e91e-4c0d-bb62-0a124062903f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'b4bc9693-e91e-4c0d-bb62-0a124062903f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', '1a942a05-fc2e-4d57-8d58-4ffe1fdd3e2e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('57ed199d-56d3-4308-bda1-3d7b7bf785c3', '35bcadfc-f7a9-4869-921e-c87ed1a6b9c6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '35bcadfc-f7a9-4869-921e-c87ed1a6b9c6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '35bcadfc-f7a9-4869-921e-c87ed1a6b9c6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c95794c9-a2af-45f8-9ece-c7f343984e60', '35bcadfc-f7a9-4869-921e-c87ed1a6b9c6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '52e940ca-c459-4727-9b99-4148b49045d6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '52e940ca-c459-4727-9b99-4148b49045d6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '52e940ca-c459-4727-9b99-4148b49045d6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '95aee52a-b817-4ca2-bb5b-50c13fa7f96b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '95aee52a-b817-4ca2-bb5b-50c13fa7f96b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '95aee52a-b817-4ca2-bb5b-50c13fa7f96b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '8762e19b-70bc-41d2-87e6-a3eebeaeb4f4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '8762e19b-70bc-41d2-87e6-a3eebeaeb4f4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', 'd871be0d-8b6a-4a49-a115-95bef7a5c1e4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'd871be0d-8b6a-4a49-a115-95bef7a5c1e4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '8941ddb8-5151-49e7-b8de-c85320ae677c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '8941ddb8-5151-49e7-b8de-c85320ae677c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('5b779401-bfa3-45c3-9f90-bb018ad8caec', 'fdcf66f9-3a65-47a6-b892-cd4b26cb3f80') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'fdcf66f9-3a65-47a6-b892-cd4b26cb3f80') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'fdcf66f9-3a65-47a6-b892-cd4b26cb3f80') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', 'fdcf66f9-3a65-47a6-b892-cd4b26cb3f80') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', 'c661d98e-cedc-4aab-81e3-57fd54002bf3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', 'c661d98e-cedc-4aab-81e3-57fd54002bf3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'c661d98e-cedc-4aab-81e3-57fd54002bf3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c95794c9-a2af-45f8-9ece-c7f343984e60', 'c661d98e-cedc-4aab-81e3-57fd54002bf3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '2e2b7dad-e064-441c-b4bf-a2cb5da8fb79') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '2e2b7dad-e064-441c-b4bf-a2cb5da8fb79') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '41a7249f-6aad-46a1-ba88-88156b9b4236') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '41a7249f-6aad-46a1-ba88-88156b9b4236') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '41a7249f-6aad-46a1-ba88-88156b9b4236') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '41a7249f-6aad-46a1-ba88-88156b9b4236') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', 'ab1eba93-397e-4bcc-b992-80d97cd38407') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', 'ab1eba93-397e-4bcc-b992-80d97cd38407') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'ab1eba93-397e-4bcc-b992-80d97cd38407') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('57ed199d-56d3-4308-bda1-3d7b7bf785c3', '7843ccac-dcaf-4394-ab24-a5039f2212d5') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '7843ccac-dcaf-4394-ab24-a5039f2212d5') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '7843ccac-dcaf-4394-ab24-a5039f2212d5') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'af8f71cd-c443-4713-8488-bd357bcb7eb9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'af8f71cd-c443-4713-8488-bd357bcb7eb9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('374736cf-3d8d-4ffc-849f-89efd55ee243', '47f135f3-c491-4ce5-a258-00a111c95d30') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '47f135f3-c491-4ce5-a258-00a111c95d30') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '47f135f3-c491-4ce5-a258-00a111c95d30') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '47f135f3-c491-4ce5-a258-00a111c95d30') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('57ed199d-56d3-4308-bda1-3d7b7bf785c3', '8dd78998-09ef-418a-a5d3-b0d47567b80f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '8dd78998-09ef-418a-a5d3-b0d47567b80f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'e1a2268c-490a-4675-91fb-29fc912ade7c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', 'a68cb588-e03a-4450-b3d7-966b05512513') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', 'a68cb588-e03a-4450-b3d7-966b05512513') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'a68cb588-e03a-4450-b3d7-966b05512513') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a68cb588-e03a-4450-b3d7-966b05512513') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', 'a68cb588-e03a-4450-b3d7-966b05512513') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('ae80ccd8-f2be-4785-b08b-c13c59f6cf84', 'a68cb588-e03a-4450-b3d7-966b05512513') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '04fc2b20-f493-4caf-9bed-27596a67ad2f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '04fc2b20-f493-4caf-9bed-27596a67ad2f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '04fc2b20-f493-4caf-9bed-27596a67ad2f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c95794c9-a2af-45f8-9ece-c7f343984e60', '04fc2b20-f493-4caf-9bed-27596a67ad2f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '62974649-7e90-47ca-b81c-73c2eee948be') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '62974649-7e90-47ca-b81c-73c2eee948be') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '62974649-7e90-47ca-b81c-73c2eee948be') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '609ba5af-2fa9-453f-9831-57b2144a43e8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '609ba5af-2fa9-453f-9831-57b2144a43e8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '609ba5af-2fa9-453f-9831-57b2144a43e8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '47b58b16-9691-46a6-b575-fda8a6a7961f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '47b58b16-9691-46a6-b575-fda8a6a7961f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6bdecd9e-b28f-433c-9644-f7da9fe2289c', '92c26bd0-7e97-44e1-b594-56fd35701afb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77b17b1f-0c74-46da-8e19-293ac88097f4', '92c26bd0-7e97-44e1-b594-56fd35701afb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b533527-e232-42d6-9d50-686266095a6d', '92c26bd0-7e97-44e1-b594-56fd35701afb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '92c26bd0-7e97-44e1-b594-56fd35701afb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '2029bdb5-8d5c-4788-86aa-a6db6404cb57') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '0e5e7153-6255-4601-830c-5932d9895c0c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '0e5e7153-6255-4601-830c-5932d9895c0c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '0e5e7153-6255-4601-830c-5932d9895c0c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '4611c238-b84d-40d1-8c0e-d1490d40ba8c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '4611c238-b84d-40d1-8c0e-d1490d40ba8c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '4611c238-b84d-40d1-8c0e-d1490d40ba8c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '8d9945f0-0e75-439b-87bd-06683204aebe') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '8d9945f0-0e75-439b-87bd-06683204aebe') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '8d9945f0-0e75-439b-87bd-06683204aebe') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '82aee5c7-f719-466d-91c7-8b1e6e46b087') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '82aee5c7-f719-466d-91c7-8b1e6e46b087') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '82aee5c7-f719-466d-91c7-8b1e6e46b087') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '82aee5c7-f719-466d-91c7-8b1e6e46b087') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '6d191bc6-1559-4cab-a06e-e17cfa503b6f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '6d191bc6-1559-4cab-a06e-e17cfa503b6f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6d191bc6-1559-4cab-a06e-e17cfa503b6f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '6d191bc6-1559-4cab-a06e-e17cfa503b6f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '6d191bc6-1559-4cab-a06e-e17cfa503b6f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', '58433bd0-2368-4f35-9819-fd9d0e7ee9ce') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '58433bd0-2368-4f35-9819-fd9d0e7ee9ce') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '58433bd0-2368-4f35-9819-fd9d0e7ee9ce') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '58433bd0-2368-4f35-9819-fd9d0e7ee9ce') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('5b779401-bfa3-45c3-9f90-bb018ad8caec', '58433bd0-2368-4f35-9819-fd9d0e7ee9ce') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '58433bd0-2368-4f35-9819-fd9d0e7ee9ce') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '58433bd0-2368-4f35-9819-fd9d0e7ee9ce') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', '58433bd0-2368-4f35-9819-fd9d0e7ee9ce') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', 'd9f0a97b-695c-4302-916b-c34bf4537936') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'd9f0a97b-695c-4302-916b-c34bf4537936') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', 'd9f0a97b-695c-4302-916b-c34bf4537936') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '1a2004c9-b3fa-46ed-982d-ea5c060025d3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '1a2004c9-b3fa-46ed-982d-ea5c060025d3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '1a2004c9-b3fa-46ed-982d-ea5c060025d3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '1a2004c9-b3fa-46ed-982d-ea5c060025d3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '1a2004c9-b3fa-46ed-982d-ea5c060025d3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '649e5d2a-6a8b-463f-a26e-089375a21011') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '649e5d2a-6a8b-463f-a26e-089375a21011') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '649e5d2a-6a8b-463f-a26e-089375a21011') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '649e5d2a-6a8b-463f-a26e-089375a21011') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('7eb9c15f-4243-4895-ada4-d08c61ebeaf1', '83567200-73ee-47a6-9c0c-f448d68ba6be') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '83567200-73ee-47a6-9c0c-f448d68ba6be') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '027f52b0-d37a-4418-a1b0-35f9227cf20d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', '027f52b0-d37a-4418-a1b0-35f9227cf20d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '027f52b0-d37a-4418-a1b0-35f9227cf20d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '027f52b0-d37a-4418-a1b0-35f9227cf20d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'd84e774a-27f5-4df4-b0c4-b1d94bb0c846') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'd84e774a-27f5-4df4-b0c4-b1d94bb0c846') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'd84e774a-27f5-4df4-b0c4-b1d94bb0c846') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', 'd84e774a-27f5-4df4-b0c4-b1d94bb0c846') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '3ba73960-9584-41e6-949b-c498078249bf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '3ba73960-9584-41e6-949b-c498078249bf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '01214497-ce5b-4e96-a962-e0f1d54afca4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '01214497-ce5b-4e96-a962-e0f1d54afca4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '01214497-ce5b-4e96-a962-e0f1d54afca4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '01214497-ce5b-4e96-a962-e0f1d54afca4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '01214497-ce5b-4e96-a962-e0f1d54afca4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', 'ef8c701a-6c33-4967-b619-38d0f08fcd49') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', 'ef8c701a-6c33-4967-b619-38d0f08fcd49') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'ef8c701a-6c33-4967-b619-38d0f08fcd49') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'ef8c701a-6c33-4967-b619-38d0f08fcd49') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', 'fe1ccff6-b318-4033-bc38-46a55c971eac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'fe1ccff6-b318-4033-bc38-46a55c971eac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'fe1ccff6-b318-4033-bc38-46a55c971eac') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '5367bdbf-8797-4cf1-ab1e-08b6949fa97d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '5367bdbf-8797-4cf1-ab1e-08b6949fa97d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5367bdbf-8797-4cf1-ab1e-08b6949fa97d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '5367bdbf-8797-4cf1-ab1e-08b6949fa97d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '9a66803d-d4e0-4928-8040-19e81e31f089') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '9a66803d-d4e0-4928-8040-19e81e31f089') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '9a66803d-d4e0-4928-8040-19e81e31f089') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('3b8d0f19-9588-4e45-b038-77cba49803c0', '9a66803d-d4e0-4928-8040-19e81e31f089') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77b17b1f-0c74-46da-8e19-293ac88097f4', '9a66803d-d4e0-4928-8040-19e81e31f089') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'c0a50d22-76b4-46d7-b045-0fc1cf98f2ca') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'c0a50d22-76b4-46d7-b045-0fc1cf98f2ca') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6443dce2-85bc-4f24-b36c-65cb57ab22d4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '17efbb66-dc5b-46e4-be11-215534fb635e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '17efbb66-dc5b-46e4-be11-215534fb635e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '7849a398-638c-4b4c-bf34-3f1576d5327b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '7849a398-638c-4b4c-bf34-3f1576d5327b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '7849a398-638c-4b4c-bf34-3f1576d5327b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '453d8638-9ee5-4536-bb8c-e4c97bb78576') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '453d8638-9ee5-4536-bb8c-e4c97bb78576') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '453d8638-9ee5-4536-bb8c-e4c97bb78576') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '453d8638-9ee5-4536-bb8c-e4c97bb78576') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '453d8638-9ee5-4536-bb8c-e4c97bb78576') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', 'f5f267dd-2546-44d2-a050-2df29019a3c8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'f5f267dd-2546-44d2-a050-2df29019a3c8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '65315542-f7a8-44f9-a2b7-e2130758f5be') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '65315542-f7a8-44f9-a2b7-e2130758f5be') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '65315542-f7a8-44f9-a2b7-e2130758f5be') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '65315542-f7a8-44f9-a2b7-e2130758f5be') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '91b1a3d5-1412-4a05-90c5-365ff25edd08') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '91b1a3d5-1412-4a05-90c5-365ff25edd08') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '91b1a3d5-1412-4a05-90c5-365ff25edd08') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('e4ea26ce-1444-41be-9342-f085f615f9a7', '91e5b613-e46b-4703-ae64-3f0f2cff2bd5') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '91e5b613-e46b-4703-ae64-3f0f2cff2bd5') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '91e5b613-e46b-4703-ae64-3f0f2cff2bd5') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', '017ca9fe-4ba7-4b21-8ebd-e7fe827ac99e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '017ca9fe-4ba7-4b21-8ebd-e7fe827ac99e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '017ca9fe-4ba7-4b21-8ebd-e7fe827ac99e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '017ca9fe-4ba7-4b21-8ebd-e7fe827ac99e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('3b8d0f19-9588-4e45-b038-77cba49803c0', 'dd3608aa-532d-474e-9f50-2a50853c7c1e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'dd3608aa-532d-474e-9f50-2a50853c7c1e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'dd3608aa-532d-474e-9f50-2a50853c7c1e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', 'dd3608aa-532d-474e-9f50-2a50853c7c1e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5ce1bc2e-48f1-44a7-8a58-98528cef6ecb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '5ce1bc2e-48f1-44a7-8a58-98528cef6ecb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '2106db0a-707e-4956-bf7c-0bb1a47a5be0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '2106db0a-707e-4956-bf7c-0bb1a47a5be0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '2106db0a-707e-4956-bf7c-0bb1a47a5be0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5f3a0b44-1a77-4385-8b14-4859bdf20dd2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '94ae40df-f0b3-44f5-b25a-6e675ead69ba') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', 'a40bd8bb-0771-474b-9cbd-128081e83b04') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a40bd8bb-0771-474b-9cbd-128081e83b04') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'a40bd8bb-0771-474b-9cbd-128081e83b04') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'a40bd8bb-0771-474b-9cbd-128081e83b04') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '51146862-0dc0-4c63-8405-1ab992e8a151') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '51146862-0dc0-4c63-8405-1ab992e8a151') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '51146862-0dc0-4c63-8405-1ab992e8a151') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '4d66ab2e-c555-4dfa-9aae-8d7211664aa9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '4d66ab2e-c555-4dfa-9aae-8d7211664aa9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '4d66ab2e-c555-4dfa-9aae-8d7211664aa9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'e86e3800-2400-4c18-ae5f-b0f24f8a9f84') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'e86e3800-2400-4c18-ae5f-b0f24f8a9f84') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', 'e86e3800-2400-4c18-ae5f-b0f24f8a9f84') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', 'e86e3800-2400-4c18-ae5f-b0f24f8a9f84') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'e86e3800-2400-4c18-ae5f-b0f24f8a9f84') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('3b8d0f19-9588-4e45-b038-77cba49803c0', '964843b7-e7da-4568-933b-59c9ca60a56d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', '964843b7-e7da-4568-933b-59c9ca60a56d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', '964843b7-e7da-4568-933b-59c9ca60a56d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('5b779401-bfa3-45c3-9f90-bb018ad8caec', '964843b7-e7da-4568-933b-59c9ca60a56d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '964843b7-e7da-4568-933b-59c9ca60a56d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '964843b7-e7da-4568-933b-59c9ca60a56d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', 'a6e93234-d3ef-4e31-b1bd-53c5a288a66e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', 'a6e93234-d3ef-4e31-b1bd-53c5a288a66e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dcf59820-af9a-4599-9552-0154f35d42d6', 'a6e93234-d3ef-4e31-b1bd-53c5a288a66e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'a6e93234-d3ef-4e31-b1bd-53c5a288a66e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'd089f7c9-bb2e-4d00-9dc2-ba5eb11dae10') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'd089f7c9-bb2e-4d00-9dc2-ba5eb11dae10') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'd089f7c9-bb2e-4d00-9dc2-ba5eb11dae10') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', 'd089f7c9-bb2e-4d00-9dc2-ba5eb11dae10') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'a3bb4ecd-66c8-46fd-9e6f-81ae8477467e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a3bb4ecd-66c8-46fd-9e6f-81ae8477467e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'a3bb4ecd-66c8-46fd-9e6f-81ae8477467e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', 'a3bb4ecd-66c8-46fd-9e6f-81ae8477467e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('5b779401-bfa3-45c3-9f90-bb018ad8caec', 'a3bb4ecd-66c8-46fd-9e6f-81ae8477467e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('5b779401-bfa3-45c3-9f90-bb018ad8caec', '52738ae4-4edf-41c1-b4ad-03fc118f3f90') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', '52738ae4-4edf-41c1-b4ad-03fc118f3f90') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('ae80ccd8-f2be-4785-b08b-c13c59f6cf84', '52738ae4-4edf-41c1-b4ad-03fc118f3f90') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '52738ae4-4edf-41c1-b4ad-03fc118f3f90') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('1f14ba08-b71f-4f00-b2a4-a9b6ae25e420', '43f659ef-e17d-49b9-abc8-da64251394e2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '43f659ef-e17d-49b9-abc8-da64251394e2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '43f659ef-e17d-49b9-abc8-da64251394e2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '21e5dc15-e416-46f7-806d-cd9c6755b92c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '21e5dc15-e416-46f7-806d-cd9c6755b92c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '032f8cf8-e928-48b6-9f68-1e629c7110a2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '032f8cf8-e928-48b6-9f68-1e629c7110a2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', '7cbbd91a-1034-41ec-90b3-e26bad836bd8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '7cbbd91a-1034-41ec-90b3-e26bad836bd8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '7cbbd91a-1034-41ec-90b3-e26bad836bd8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', 'e710a596-0331-4b3d-9376-f17d61c5213b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'e710a596-0331-4b3d-9376-f17d61c5213b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'e710a596-0331-4b3d-9376-f17d61c5213b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', 'e710a596-0331-4b3d-9376-f17d61c5213b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('3b8d0f19-9588-4e45-b038-77cba49803c0', 'b0463c60-0912-4851-8012-6ae55742002d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'b0463c60-0912-4851-8012-6ae55742002d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'b0463c60-0912-4851-8012-6ae55742002d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '29560832-55a2-4110-8fbc-733ba606582e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '29560832-55a2-4110-8fbc-733ba606582e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '026f4d61-a301-4bd1-97a6-b934da4798af') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '026f4d61-a301-4bd1-97a6-b934da4798af') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '026f4d61-a301-4bd1-97a6-b934da4798af') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '026f4d61-a301-4bd1-97a6-b934da4798af') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', 'a6a5543e-1e39-4a13-a333-0778cdcfb6c1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', 'a6a5543e-1e39-4a13-a333-0778cdcfb6c1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('ae80ccd8-f2be-4785-b08b-c13c59f6cf84', 'a6a5543e-1e39-4a13-a333-0778cdcfb6c1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a6a5543e-1e39-4a13-a333-0778cdcfb6c1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '49e5474a-ad99-4b6f-9849-9ad595a7313f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '49e5474a-ad99-4b6f-9849-9ad595a7313f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '49e5474a-ad99-4b6f-9849-9ad595a7313f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '49e5474a-ad99-4b6f-9849-9ad595a7313f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '1b37f6a1-e7b5-4691-a71b-23a23c91ad01') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '1b37f6a1-e7b5-4691-a71b-23a23c91ad01') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '1b37f6a1-e7b5-4691-a71b-23a23c91ad01') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('4bcaa3bb-019d-4e2b-8f7b-26ce7c280abf', '670fa5f9-984e-41a8-bd7a-baa40a5814dc') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', '670fa5f9-984e-41a8-bd7a-baa40a5814dc') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('5b779401-bfa3-45c3-9f90-bb018ad8caec', '670fa5f9-984e-41a8-bd7a-baa40a5814dc') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('ae80ccd8-f2be-4785-b08b-c13c59f6cf84', '670fa5f9-984e-41a8-bd7a-baa40a5814dc') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '670fa5f9-984e-41a8-bd7a-baa40a5814dc') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'c65d8ed5-cdaa-43e2-a9d8-02872027b61a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '5d020637-878e-4270-acbc-14c138c4f799') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5d020637-878e-4270-acbc-14c138c4f799') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '5d020637-878e-4270-acbc-14c138c4f799') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '5d020637-878e-4270-acbc-14c138c4f799') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('5b779401-bfa3-45c3-9f90-bb018ad8caec', '5d020637-878e-4270-acbc-14c138c4f799') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '4cbcad6d-1691-4f9c-bdf1-ab6c82958fb0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', '4cbcad6d-1691-4f9c-bdf1-ab6c82958fb0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '4cbcad6d-1691-4f9c-bdf1-ab6c82958fb0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '16be7f8a-b94e-4f25-8ab1-c9aac42f917c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '16be7f8a-b94e-4f25-8ab1-c9aac42f917c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '16be7f8a-b94e-4f25-8ab1-c9aac42f917c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', 'bc1fc335-eddf-453c-a07a-99eaed639db4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'bc1fc335-eddf-453c-a07a-99eaed639db4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'bc1fc335-eddf-453c-a07a-99eaed639db4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '25eedef6-abb2-4894-894d-035678041417') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '25eedef6-abb2-4894-894d-035678041417') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '25eedef6-abb2-4894-894d-035678041417') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '25eedef6-abb2-4894-894d-035678041417') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '75a74f43-9bbf-41ae-b5ad-97134dfb1b47') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '75a74f43-9bbf-41ae-b5ad-97134dfb1b47') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '75a74f43-9bbf-41ae-b5ad-97134dfb1b47') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '75a74f43-9bbf-41ae-b5ad-97134dfb1b47') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('5b779401-bfa3-45c3-9f90-bb018ad8caec', '75a74f43-9bbf-41ae-b5ad-97134dfb1b47') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '7aa72071-dd77-4f18-b765-00788e36186f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '7aa72071-dd77-4f18-b765-00788e36186f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '3384e776-ec3f-42ab-a8dd-dfa7f6ee352c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '3384e776-ec3f-42ab-a8dd-dfa7f6ee352c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '3384e776-ec3f-42ab-a8dd-dfa7f6ee352c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '4e6b3901-f133-41d9-b2df-9d7f9b6ad5de') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('1f14ba08-b71f-4f00-b2a4-a9b6ae25e420', 'bacc180d-97c5-48ae-a2b5-fa965b9fca30') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'e8618f39-20af-49b0-964d-bf87010a17d8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'e8618f39-20af-49b0-964d-bf87010a17d8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'e8618f39-20af-49b0-964d-bf87010a17d8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '9618d07b-cd85-48d9-a7d7-8448247e045d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '9618d07b-cd85-48d9-a7d7-8448247e045d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '9618d07b-cd85-48d9-a7d7-8448247e045d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '40f68f35-fbb9-4e9f-85b8-af8be32a8088') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '40f68f35-fbb9-4e9f-85b8-af8be32a8088') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '522c4361-6eb9-4552-9ba4-70b73f67393d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '522c4361-6eb9-4552-9ba4-70b73f67393d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '522c4361-6eb9-4552-9ba4-70b73f67393d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'e38a5ca0-ce64-4c01-b93a-ac09a72a434a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'e38a5ca0-ce64-4c01-b93a-ac09a72a434a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '8ed1fbdc-c5cd-4778-8549-a18046584579') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '08543747-14c4-4298-a4ce-24841eb9d886') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '08543747-14c4-4298-a4ce-24841eb9d886') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '08543747-14c4-4298-a4ce-24841eb9d886') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', '53702ae5-7311-44f8-8296-43da5fc952e0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '53702ae5-7311-44f8-8296-43da5fc952e0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '53702ae5-7311-44f8-8296-43da5fc952e0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '53702ae5-7311-44f8-8296-43da5fc952e0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '0b3ecd1c-22e2-420f-b9bd-66e567b96d8a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '0b3ecd1c-22e2-420f-b9bd-66e567b96d8a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '0b3ecd1c-22e2-420f-b9bd-66e567b96d8a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '488f2279-566f-4fca-b342-2d55848f31a1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '488f2279-566f-4fca-b342-2d55848f31a1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '488f2279-566f-4fca-b342-2d55848f31a1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '488f2279-566f-4fca-b342-2d55848f31a1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '0e2ac07f-42a9-4f2c-a9d9-27aa28f38712') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '0e2ac07f-42a9-4f2c-a9d9-27aa28f38712') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '41d5cb73-0a49-47aa-a46f-fdec1e7c165d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '41d5cb73-0a49-47aa-a46f-fdec1e7c165d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('7eb9c15f-4243-4895-ada4-d08c61ebeaf1', 'c4679eed-a890-4b2f-a4fb-f714641f7d26') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b533527-e232-42d6-9d50-686266095a6d', 'c4679eed-a890-4b2f-a4fb-f714641f7d26') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'c4679eed-a890-4b2f-a4fb-f714641f7d26') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a413055d-725d-4a1f-a799-f13d1b7615dd') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('338fcc4b-2b2c-4312-8de9-58ccd249a028', 'ece0b104-b27e-4567-b436-ba81ead4ee9f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'ece0b104-b27e-4567-b436-ba81ead4ee9f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'ece0b104-b27e-4567-b436-ba81ead4ee9f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', 'f089c406-46ee-46a2-a224-b858b2d494df') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', 'f9b68f87-356b-46bc-80b9-e61ebbe03358') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '779ab354-664d-4eeb-95a3-04e3d0f3a009') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '779ab354-664d-4eeb-95a3-04e3d0f3a009') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '779ab354-664d-4eeb-95a3-04e3d0f3a009') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '779ab354-664d-4eeb-95a3-04e3d0f3a009') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '7917b9dc-f46c-42a1-af2c-9205b9d6f712') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '7917b9dc-f46c-42a1-af2c-9205b9d6f712') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '50bb2af0-205c-45d9-b845-7a1f513438f7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '50bb2af0-205c-45d9-b845-7a1f513438f7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '50bb2af0-205c-45d9-b845-7a1f513438f7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '50bb2af0-205c-45d9-b845-7a1f513438f7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '9a92a868-53c3-4d4c-a373-482ba666cd30') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a54d633a-a48e-4a27-bd50-51fcb27b0bcb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'a54d633a-a48e-4a27-bd50-51fcb27b0bcb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', 'a54d633a-a48e-4a27-bd50-51fcb27b0bcb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', 'a54d633a-a48e-4a27-bd50-51fcb27b0bcb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '66c9f5db-5049-41bd-938c-76c398d00682') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '66c9f5db-5049-41bd-938c-76c398d00682') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '66c9f5db-5049-41bd-938c-76c398d00682') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6f95c8cc-4dd0-4c5a-ba5a-6e9be5edc631') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'dbd36963-bece-4dfa-aa80-e39aa0959492') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'dbd36963-bece-4dfa-aa80-e39aa0959492') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('5b779401-bfa3-45c3-9f90-bb018ad8caec', '20be53d8-0d69-4311-9871-86c362315850') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('634b4962-9bf6-444e-84c7-5e54d8655ba4', '6904b0a6-8b97-4982-a650-854f29b1d4bf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '6904b0a6-8b97-4982-a650-854f29b1d4bf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6904b0a6-8b97-4982-a650-854f29b1d4bf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '6394b2cc-d9f1-4962-92d9-de4ec03019bf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6394b2cc-d9f1-4962-92d9-de4ec03019bf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'ac0c0f04-560f-4952-8c9f-aec9437f3cca') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'ac0c0f04-560f-4952-8c9f-aec9437f3cca') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'c32a2f53-3ea0-4999-a40e-5ea4cd33f275') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'c32a2f53-3ea0-4999-a40e-5ea4cd33f275') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'c32a2f53-3ea0-4999-a40e-5ea4cd33f275') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('5b779401-bfa3-45c3-9f90-bb018ad8caec', 'c32a2f53-3ea0-4999-a40e-5ea4cd33f275') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', '44f64434-e4b9-498c-9d83-df00b8f9ca1a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '44f64434-e4b9-498c-9d83-df00b8f9ca1a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '44f64434-e4b9-498c-9d83-df00b8f9ca1a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'f8b4b862-4838-4b1b-a56d-46b2ddfe6b6b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', 'f8b4b862-4838-4b1b-a56d-46b2ddfe6b6b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'f8b4b862-4838-4b1b-a56d-46b2ddfe6b6b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'f8b4b862-4838-4b1b-a56d-46b2ddfe6b6b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', 'f8b4b862-4838-4b1b-a56d-46b2ddfe6b6b') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '1bf9572d-5135-48fc-bf03-c63ade9a08c9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '1bf9572d-5135-48fc-bf03-c63ade9a08c9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'f36f7749-6407-4c01-9c20-139da076e3ef') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'f36f7749-6407-4c01-9c20-139da076e3ef') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'de2198c0-6c17-4cbf-90b1-7db066ad7a50') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'de2198c0-6c17-4cbf-90b1-7db066ad7a50') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'de2198c0-6c17-4cbf-90b1-7db066ad7a50') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '3af16bab-c64c-42db-bc15-3df7cdb01d48') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '3af16bab-c64c-42db-bc15-3df7cdb01d48') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '3af16bab-c64c-42db-bc15-3df7cdb01d48') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '3af16bab-c64c-42db-bc15-3df7cdb01d48') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6c849c81-c198-4412-97fd-1347a00507eb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '6c849c81-c198-4412-97fd-1347a00507eb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '6c849c81-c198-4412-97fd-1347a00507eb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '6c849c81-c198-4412-97fd-1347a00507eb') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '2ee5504a-05db-41bf-837f-38fee6f5fc32') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '2ee5504a-05db-41bf-837f-38fee6f5fc32') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '2ee5504a-05db-41bf-837f-38fee6f5fc32') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c95794c9-a2af-45f8-9ece-c7f343984e60', '2ee5504a-05db-41bf-837f-38fee6f5fc32') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', 'f9027a96-bb13-464e-9d06-1fe6cfbe330f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'f9027a96-bb13-464e-9d06-1fe6cfbe330f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'f9027a96-bb13-464e-9d06-1fe6cfbe330f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'f9027a96-bb13-464e-9d06-1fe6cfbe330f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', 'f9027a96-bb13-464e-9d06-1fe6cfbe330f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '14d0411c-9378-48ef-a00d-54066fbc91d2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '14d0411c-9378-48ef-a00d-54066fbc91d2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '14d0411c-9378-48ef-a00d-54066fbc91d2') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '74b62790-2afa-4a94-91cc-9c83a69788ba') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '74b62790-2afa-4a94-91cc-9c83a69788ba') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '74b62790-2afa-4a94-91cc-9c83a69788ba') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '39a691e4-7e51-4374-829f-68eebfa68eb1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '39a691e4-7e51-4374-829f-68eebfa68eb1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('374736cf-3d8d-4ffc-849f-89efd55ee243', '39a691e4-7e51-4374-829f-68eebfa68eb1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', 'b1e9d303-753f-4f06-a22b-7a4a9f7f3dd4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'b1e9d303-753f-4f06-a22b-7a4a9f7f3dd4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '97423ea7-a1d9-4fe0-aa5d-b996ffce0b94') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('5b779401-bfa3-45c3-9f90-bb018ad8caec', '97423ea7-a1d9-4fe0-aa5d-b996ffce0b94') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '97423ea7-a1d9-4fe0-aa5d-b996ffce0b94') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c95794c9-a2af-45f8-9ece-c7f343984e60', '97423ea7-a1d9-4fe0-aa5d-b996ffce0b94') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('374736cf-3d8d-4ffc-849f-89efd55ee243', '97423ea7-a1d9-4fe0-aa5d-b996ffce0b94') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', '0ee7b98c-3fd7-41cb-90e9-fc152fa85f0e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '0ee7b98c-3fd7-41cb-90e9-fc152fa85f0e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('3b8d0f19-9588-4e45-b038-77cba49803c0', '0bc25f73-28b0-406a-b552-0f8347fab526') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '0bc25f73-28b0-406a-b552-0f8347fab526') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '0bc25f73-28b0-406a-b552-0f8347fab526') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', '38556509-32f0-43bd-8fb2-dac20e63f352') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b533527-e232-42d6-9d50-686266095a6d', '38556509-32f0-43bd-8fb2-dac20e63f352') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '38556509-32f0-43bd-8fb2-dac20e63f352') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', 'c323cd8e-262b-44f2-9d78-2f8d73e495bc') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'c323cd8e-262b-44f2-9d78-2f8d73e495bc') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', 'd65ed509-2e34-43a2-9e4a-8e45cafed47a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'd65ed509-2e34-43a2-9e4a-8e45cafed47a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', 'd65ed509-2e34-43a2-9e4a-8e45cafed47a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'd65ed509-2e34-43a2-9e4a-8e45cafed47a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', 'd65ed509-2e34-43a2-9e4a-8e45cafed47a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '0322b744-d156-4c68-b7c7-0d989cf044b4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', 'a7468ec9-9f42-4056-b865-83478c407e10') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a7468ec9-9f42-4056-b865-83478c407e10') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', 'a7468ec9-9f42-4056-b865-83478c407e10') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', 'a7468ec9-9f42-4056-b865-83478c407e10') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '80f3057e-c34f-44eb-b552-94b465fc668c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '80f3057e-c34f-44eb-b552-94b465fc668c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '80f3057e-c34f-44eb-b552-94b465fc668c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '80f3057e-c34f-44eb-b552-94b465fc668c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '80f3057e-c34f-44eb-b552-94b465fc668c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '10f73175-d7a7-4d61-802c-a0cf118e11f9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '10f73175-d7a7-4d61-802c-a0cf118e11f9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '10f73175-d7a7-4d61-802c-a0cf118e11f9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '10f73175-d7a7-4d61-802c-a0cf118e11f9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '5b83a09b-9f49-46b6-b4d1-0ee7bfd73519') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', '5b83a09b-9f49-46b6-b4d1-0ee7bfd73519') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '5b83a09b-9f49-46b6-b4d1-0ee7bfd73519') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', '6b11ea3c-193c-44ce-b027-c544ab2d332e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6b11ea3c-193c-44ce-b027-c544ab2d332e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '6b11ea3c-193c-44ce-b027-c544ab2d332e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', 'a6859bce-7332-41ed-bdcd-53dadc477105') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', 'a6859bce-7332-41ed-bdcd-53dadc477105') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a6859bce-7332-41ed-bdcd-53dadc477105') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'a6859bce-7332-41ed-bdcd-53dadc477105') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'a6859bce-7332-41ed-bdcd-53dadc477105') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'f8daab1c-4abf-4f66-a009-1011dae27009') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'f8daab1c-4abf-4f66-a009-1011dae27009') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', 'f8daab1c-4abf-4f66-a009-1011dae27009') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '44163133-59bd-41aa-893f-bb792b1f2b0e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '44163133-59bd-41aa-893f-bb792b1f2b0e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '3b5c3a36-c7ad-4b4b-a86d-dc29338360a1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '3b5c3a36-c7ad-4b4b-a86d-dc29338360a1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '7da7aec0-2ed8-4868-9abd-61a325deba3d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '7da7aec0-2ed8-4868-9abd-61a325deba3d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '7da7aec0-2ed8-4868-9abd-61a325deba3d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '7da7aec0-2ed8-4868-9abd-61a325deba3d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d75ecc02-7eae-4786-8e18-3882d3aa718e', '11a8a973-4748-4145-b55d-fa026f229baf') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', '0475dc1a-b655-4bd4-8a2f-2d5f32c1f1c8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '0475dc1a-b655-4bd4-8a2f-2d5f32c1f1c8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '0475dc1a-b655-4bd4-8a2f-2d5f32c1f1c8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '12d31094-7048-48a1-ac43-dcfe227e9063') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '12d31094-7048-48a1-ac43-dcfe227e9063') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '12d31094-7048-48a1-ac43-dcfe227e9063') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '12d31094-7048-48a1-ac43-dcfe227e9063') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '262d8b3a-4472-45e0-bffb-e8e29ad5801c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c95794c9-a2af-45f8-9ece-c7f343984e60', '262d8b3a-4472-45e0-bffb-e8e29ad5801c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '262d8b3a-4472-45e0-bffb-e8e29ad5801c') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('3b8d0f19-9588-4e45-b038-77cba49803c0', 'd7a40f48-d5d8-4434-8742-b0c0e8ad3874') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', 'd7a40f48-d5d8-4434-8742-b0c0e8ad3874') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'd7a40f48-d5d8-4434-8742-b0c0e8ad3874') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'd7a40f48-d5d8-4434-8742-b0c0e8ad3874') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', '9b08ec71-d139-46b6-84d8-9fc28f95e27a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '9b08ec71-d139-46b6-84d8-9fc28f95e27a') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', '3d770795-5778-4737-bf84-0d6e93b37c98') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', '3d770795-5778-4737-bf84-0d6e93b37c98') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '3d770795-5778-4737-bf84-0d6e93b37c98') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('7eb9c15f-4243-4895-ada4-d08c61ebeaf1', '615d2adf-d941-46cd-9dbb-f0974c58afc6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '615d2adf-d941-46cd-9dbb-f0974c58afc6') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '2bfb95c9-0a6f-46f1-939d-ca44130dd21f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '2bfb95c9-0a6f-46f1-939d-ca44130dd21f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '2bfb95c9-0a6f-46f1-939d-ca44130dd21f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c95794c9-a2af-45f8-9ece-c7f343984e60', '2bfb95c9-0a6f-46f1-939d-ca44130dd21f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '2bfb95c9-0a6f-46f1-939d-ca44130dd21f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '2bfb95c9-0a6f-46f1-939d-ca44130dd21f') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'd7064dae-6ad0-4bfe-a9d1-de94e2616f94') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'd7064dae-6ad0-4bfe-a9d1-de94e2616f94') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'd7064dae-6ad0-4bfe-a9d1-de94e2616f94') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'd7064dae-6ad0-4bfe-a9d1-de94e2616f94') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', 'd7064dae-6ad0-4bfe-a9d1-de94e2616f94') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', 'a9ea79fc-19ef-4c10-aacf-01331cb49a60') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a9ea79fc-19ef-4c10-aacf-01331cb49a60') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'a9ea79fc-19ef-4c10-aacf-01331cb49a60') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', 'a9ea79fc-19ef-4c10-aacf-01331cb49a60') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', 'f4a21b9c-374c-4712-8f73-0a9b3a3cedd0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', 'f4a21b9c-374c-4712-8f73-0a9b3a3cedd0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '4b95f558-1b83-4811-b184-de22760502b1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '4b95f558-1b83-4811-b184-de22760502b1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '4b95f558-1b83-4811-b184-de22760502b1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'b9bc8a29-6d51-4e83-8c44-2c5cd4112348') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'b9bc8a29-6d51-4e83-8c44-2c5cd4112348') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '88d0788a-dffc-49b7-81aa-d7832a0a9971') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '88d0788a-dffc-49b7-81aa-d7832a0a9971') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '88d0788a-dffc-49b7-81aa-d7832a0a9971') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', '88d0788a-dffc-49b7-81aa-d7832a0a9971') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'd31c5a2d-d5a7-4ad5-bcbf-e7b3d0c8f7a3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'd31c5a2d-d5a7-4ad5-bcbf-e7b3d0c8f7a3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', 'd31c5a2d-d5a7-4ad5-bcbf-e7b3d0c8f7a3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', 'd31c5a2d-d5a7-4ad5-bcbf-e7b3d0c8f7a3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'd31c5a2d-d5a7-4ad5-bcbf-e7b3d0c8f7a3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'd31c5a2d-d5a7-4ad5-bcbf-e7b3d0c8f7a3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'd31c5a2d-d5a7-4ad5-bcbf-e7b3d0c8f7a3') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('3b8d0f19-9588-4e45-b038-77cba49803c0', 'de2ca761-e4ee-4856-8d2a-928249362806') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('df857ed6-d53d-490f-8066-d769303cf847', 'de2ca761-e4ee-4856-8d2a-928249362806') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'de2ca761-e4ee-4856-8d2a-928249362806') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', 'de2ca761-e4ee-4856-8d2a-928249362806') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'de2ca761-e4ee-4856-8d2a-928249362806') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('3b8d0f19-9588-4e45-b038-77cba49803c0', 'b30e9302-6a7f-490a-b9e0-48a9a9d42e2d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('5b779401-bfa3-45c3-9f90-bb018ad8caec', 'b30e9302-6a7f-490a-b9e0-48a9a9d42e2d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('be0ce236-b828-4184-bab6-a4c74f467f44', 'b30e9302-6a7f-490a-b9e0-48a9a9d42e2d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'b30e9302-6a7f-490a-b9e0-48a9a9d42e2d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'b30e9302-6a7f-490a-b9e0-48a9a9d42e2d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'b30e9302-6a7f-490a-b9e0-48a9a9d42e2d') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '110e0c85-45e0-4461-a82b-837dde664284') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', '110e0c85-45e0-4461-a82b-837dde664284') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '110e0c85-45e0-4461-a82b-837dde664284') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '110e0c85-45e0-4461-a82b-837dde664284') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c1e80507-4a20-43a4-b22e-bb42d6dbb5d8', '27b8ce39-c89e-49f9-a19b-92ea7da6c633') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '27b8ce39-c89e-49f9-a19b-92ea7da6c633') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('ae80ccd8-f2be-4785-b08b-c13c59f6cf84', 'e6da21eb-bf79-42af-8a65-5584b84f62d8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('290813fd-91c8-42b6-8788-d2eea533a6cf', 'e6da21eb-bf79-42af-8a65-5584b84f62d8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', 'e6da21eb-bf79-42af-8a65-5584b84f62d8') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('0cab608f-1a16-41fd-bdf8-6c4107e1e4bc', 'bf4945de-9b26-4bde-84bf-85f9b2b9fdd0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', 'bf4945de-9b26-4bde-84bf-85f9b2b9fdd0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'bf4945de-9b26-4bde-84bf-85f9b2b9fdd0') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('f810f8cf-4957-4012-892a-a50cd15e7294', 'aac82c95-2ad5-4226-b74f-a6879fe86ed7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', 'aac82c95-2ad5-4226-b74f-a6879fe86ed7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', 'aac82c95-2ad5-4226-b74f-a6879fe86ed7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('77f5f79b-349e-48b6-add1-73e61ff51909', '648f5dde-d549-4879-a645-f7fd1aef22b4') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'd6950ddc-1c2c-4c39-8b58-8a8ad66482f1') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', 'bfaef5ac-4c61-4e7a-849e-c60b4790c1b7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('bf8001e3-006f-4dc0-8f52-0be4d17d1a37', 'bfaef5ac-4c61-4e7a-849e-c60b4790c1b7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'bfaef5ac-4c61-4e7a-849e-c60b4790c1b7') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '4cf62182-da37-4bf0-8e59-4bac1be6a79e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('57ed199d-56d3-4308-bda1-3d7b7bf785c3', '4cf62182-da37-4bf0-8e59-4bac1be6a79e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '4cf62182-da37-4bf0-8e59-4bac1be6a79e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '4cf62182-da37-4bf0-8e59-4bac1be6a79e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '4cf62182-da37-4bf0-8e59-4bac1be6a79e') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('57ed199d-56d3-4308-bda1-3d7b7bf785c3', '1bbc7ad4-962b-4e1c-afd9-300f67cd50fe') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', '1bbc7ad4-962b-4e1c-afd9-300f67cd50fe') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '1bbc7ad4-962b-4e1c-afd9-300f67cd50fe') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', '1bbc7ad4-962b-4e1c-afd9-300f67cd50fe') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6bdecd9e-b28f-433c-9644-f7da9fe2289c', 'd66326e4-af95-4625-8274-590a0d7388b5') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'd66326e4-af95-4625-8274-590a0d7388b5') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('57ed199d-56d3-4308-bda1-3d7b7bf785c3', 'a536b622-a91e-4064-acb3-c7d7f8f5c1ea') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('6415c616-6b9c-47cc-a694-390da0d0a1ea', 'a536b622-a91e-4064-acb3-c7d7f8f5c1ea') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', 'a536b622-a91e-4064-acb3-c7d7f8f5c1ea') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', 'a536b622-a91e-4064-acb3-c7d7f8f5c1ea') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '17ca81bd-194f-46a9-81fd-69ca39101a37') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '17ca81bd-194f-46a9-81fd-69ca39101a37') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b870132-e0a6-41db-b85c-88ff7d89eaeb', '17ca81bd-194f-46a9-81fd-69ca39101a37') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '17ca81bd-194f-46a9-81fd-69ca39101a37') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c95794c9-a2af-45f8-9ece-c7f343984e60', '80400af6-e6a1-4321-992d-48c09fc68984') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('37e50d51-2f18-42a2-9500-3b507b7239e2', '80400af6-e6a1-4321-992d-48c09fc68984') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c77ad999-8456-4ded-bab7-ba6c2072c7b4', '80400af6-e6a1-4321-992d-48c09fc68984') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('d2f1e774-1eb1-4972-b9ad-2e764f70cf2c', '80400af6-e6a1-4321-992d-48c09fc68984') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('8b492a72-8606-4660-9c7b-179be1d0be9e', 'ae4f1111-5c1a-4600-bd9e-f0183e727e06') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('80514d04-a7e6-4594-93cb-8c1131641b06', 'ae4f1111-5c1a-4600-bd9e-f0183e727e06') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '7b6c22b2-e81d-45f2-b619-b5b9fc031ba9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '7b6c22b2-e81d-45f2-b619-b5b9fc031ba9') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('c3e1908c-d9ef-4ac1-8b6d-8ba2a36585c3', '6f641d7c-9d1e-4b8a-9fd5-79d05463c131') -INSERT INTO "club_tags" ("tag_id", "club_id") VALUES ('dfa2cfd7-6ff1-4ea9-ac8a-c837a7ae95d2', '6f641d7c-9d1e-4b8a-9fd5-79d05463c131') -COMMIT; --- END GENERATED MOCK DATA. Made with <3 by Garrett and Michael diff --git a/mock_data/requirements.txt b/mock_data/requirements.txt index f37826c7e..7d93bcee2 100644 --- a/mock_data/requirements.txt +++ b/mock_data/requirements.txt @@ -1,3 +1,4 @@ openai==1.24.0 progress==1.6 Requests==2.31.0 +psycopg2==2.9.9 \ No newline at end of file From d40e2ed6b19af424914402ddc2165ee747671abe Mon Sep 17 00:00:00 2001 From: Michael Brennan <76018881+michael-brennan2005@users.noreply.github.com> Date: Tue, 28 May 2024 14:05:04 -0400 Subject: [PATCH 3/9] feat: config refactor (#927) Co-authored-by: garrettladley --- backend/DEPLOYMENT.md | 39 ++++ backend/config/app.go | 7 + backend/config/application.go | 7 - backend/config/auth.go | 24 +-- backend/config/aws.go | 66 +++---- backend/config/calendar.go | 10 +- backend/config/config.go | 95 +-------- backend/config/database.go | 55 +++--- backend/config/local.go | 69 ------- backend/config/oauth.go | 45 ++--- backend/config/production.go | 128 ------------- backend/config/redis.go | 26 +-- backend/config/resend.go | 18 +- backend/config/settings.go | 103 ++++++++++ backend/config/{super_user.go => sudo.go} | 11 +- backend/database/store/redis.go | 26 +-- backend/go.mod | 18 +- backend/go.sum | 86 +-------- backend/integrations/file/file.go | 10 +- backend/main.go | 29 ++- backend/search/seed.go | 12 +- backend/tests/api/helpers/app.go | 2 +- backend/utilities/json.go | 4 +- cli/go.sum | 1 + cli/helpers/database.go | 6 +- config/.env.template | 49 ++++- go.work.sum | 224 +++++----------------- 27 files changed, 397 insertions(+), 773 deletions(-) create mode 100644 backend/DEPLOYMENT.md create mode 100644 backend/config/app.go delete mode 100644 backend/config/application.go delete mode 100644 backend/config/local.go delete mode 100644 backend/config/production.go create mode 100644 backend/config/settings.go rename backend/config/{super_user.go => sudo.go} (51%) diff --git a/backend/DEPLOYMENT.md b/backend/DEPLOYMENT.md new file mode 100644 index 000000000..00421163e --- /dev/null +++ b/backend/DEPLOYMENT.md @@ -0,0 +1,39 @@ +# Configuration + +SAC uses environment variables for configuration. SAC will, by default, pull the envvars from the process in which it was launched, but you can also pass in a .env file (using the --config flag) and use the values defined in there. See .env.template for an example .env file. + +| Name | Group | Description | +|--------------------------------------|------------|---------------------------------------| +| SAC_APPLICATION_PORT | app | port to run the server on. | +| SAC_APPLICATION_HOST | app | host to run the server on. | +| SAC_APPLICATION_BASE_URL | app | base url to run the server on. | +| SAC_DB_USERNAME | db | username for database. | +| SAC_DB_PASSWORD | db | password for database. | +| SAC_DB_PORT | db | port for database. | +| SAC_DB_HOST | db | host for database. | +| SAC_DB_NAME | db | name of database. | +| SAC_DB_REQUIRE_SSL | db | if the db connection requires ssl. | +| SAC_REDIS_ACTIVE_TOKENS_USERNAME | redis | username for active tokens redis. | +| SAC_REDIS_ACTIVE_TOKENS_PASSWORD | redis | password for active tokens redis. | +| SAC_REDIS_ACTIVE_TOKENS_HOST | redis | host for active tokens redis. | +| SAC_REDIS_ACTIVE_TOKENS_PORT | redis | port for active tokens redis. | +| SAC_REDIS_ACTIVE_TOKENS_DB | redis | db for active tokens redis. | +| SAC_REDIS_BLACKLIST_USERNAME | redis | username for blacklist redis. | +| SAC_REDIS_BLACKLIST_PASSWORD | redis | password for blacklist redis. | +| SAC_REDIS_BLACKLIST_HOST | redis | host for blacklist redis. | +| SAC_REDIS_BLACKLIST_PORT | redis | port for blacklist redis. | +| SAC_REDIS_BLACKLIST_DB | redis | db for blacklist redis. | +| SAC_REDIS_LIMITER_USERNAME | redis | username for limiter redis. | +| SAC_REDIS_LIMITER_PASSWORD | redis | password for limiter redis. | +| SAC_REDIS_LIMITER_HOST | redis | host for limiter redis. | +| SAC_REDIS_LIMITER_PORT | redis | port for limiter redis. | +| SAC_REDIS_LIMITER_DB | redis | db for limiter redis. | +| SAC_SUDO_PASSWORD | superuser | password for the superuser. | +| SAC_AUTH_ACCESS_KEY | auth | access key for auth. | +| SAC_AUTH_REFRESH_KEY | auth | refresh key for auth. | +| SAC_AWS_BUCKET_NAME | aws | bucket name for aws s3. | +| SAC_AWS_ID | aws | id for aws s3. | +| SAC_AWS_SECRET | aws | secret for aws s3. | +| SAC_AWS_REGION | aws | region for aws s3. | +| SAC_RESEND_API_KEY | resend | api key for resend. | +| SAC_CALENDAR_MAX_TERMINATION_DATE | calendar | max termination date for calendar integrations. | diff --git a/backend/config/app.go b/backend/config/app.go new file mode 100644 index 000000000..24c1e6561 --- /dev/null +++ b/backend/config/app.go @@ -0,0 +1,7 @@ +package config + +type ApplicationSettings struct { + Port uint16 `env:"PORT"` + Host string `env:"HOST"` + BaseUrl string `env:"BASE_URL"` +} diff --git a/backend/config/application.go b/backend/config/application.go deleted file mode 100644 index dd2591408..000000000 --- a/backend/config/application.go +++ /dev/null @@ -1,7 +0,0 @@ -package config - -type ApplicationSettings struct { - Port uint16 `yaml:"port"` - Host string `yaml:"host"` - BaseUrl string `yaml:"baseurl"` -} diff --git a/backend/config/auth.go b/backend/config/auth.go index caf360ce6..420eeed1f 100644 --- a/backend/config/auth.go +++ b/backend/config/auth.go @@ -1,10 +1,6 @@ package config -import ( - "errors" - - m "github.com/garrettladley/mattress" -) +import m "github.com/garrettladley/mattress" type AuthSettings struct { AccessKey *m.Secret[string] @@ -12,23 +8,23 @@ type AuthSettings struct { } type intermediateAuthSettings struct { - AccessKey string `yaml:"accesskey"` - RefreshKey string `yaml:"refreshkey"` + AccessKey string `env:"ACCESS_KEY"` + RefreshKey string `env:"REFRESH_KEY"` } -func (int *intermediateAuthSettings) into() (*AuthSettings, error) { - accessToken, err := m.NewSecret(int.AccessKey) +func (i *intermediateAuthSettings) into() (*AuthSettings, error) { + accessKey, err := m.NewSecret(i.AccessKey) if err != nil { - return nil, errors.New("failed to create secret from access key") + return nil, err } - refreshToken, err := m.NewSecret(int.RefreshKey) + refreshKey, err := m.NewSecret(i.RefreshKey) if err != nil { - return nil, errors.New("failed to create secret from refresh key") + return nil, err } return &AuthSettings{ - AccessKey: accessToken, - RefreshKey: refreshToken, + AccessKey: accessKey, + RefreshKey: refreshKey, }, nil } diff --git a/backend/config/aws.go b/backend/config/aws.go index 18bf85901..2f5a88c8e 100644 --- a/backend/config/aws.go +++ b/backend/config/aws.go @@ -1,64 +1,46 @@ package config -import ( - "errors" - "os" - - m "github.com/garrettladley/mattress" -) +import m "github.com/garrettladley/mattress" type AWSSettings struct { - BUCKET_NAME *m.Secret[string] - ID *m.Secret[string] - SECRET *m.Secret[string] - REGION *m.Secret[string] + BucketName *m.Secret[string] + Id *m.Secret[string] + Secret *m.Secret[string] + Region *m.Secret[string] } -func readAWSSettings() (*AWSSettings, error) { - bucketName := os.Getenv("SAC_AWS_BUCKET_NAME") - if bucketName == "" { - return nil, errors.New("SAC_AWS_BUCKET_NAME is not set") - } +type intermediateAWSSettings struct { + BucketName string `env:"BUCKET_NAME"` + Id string `env:"ID"` + Secret string `env:"SECRET"` + Region string `env:"REGION"` +} - secretBucketName, err := m.NewSecret(bucketName) +func (i *intermediateAWSSettings) into() (*AWSSettings, error) { + bucketName, err := m.NewSecret(i.BucketName) if err != nil { - return nil, errors.New("failed to create secret from bucket name") - } - - id := os.Getenv("SAC_AWS_ID") - if id == "" { - return nil, errors.New("SAC_AWS_ID is not set") + return nil, err } - secretID, err := m.NewSecret(id) + id, err := m.NewSecret(i.Id) if err != nil { - return nil, errors.New("failed to create secret from id") + return nil, err } - secret := os.Getenv("SAC_AWS_SECRET") - if secret == "" { - return nil, errors.New("SAC_AWS_SECRET is not set") - } - - secretSecret, err := m.NewSecret(secret) + secret, err := m.NewSecret(i.Secret) if err != nil { - return nil, errors.New("failed to create secret from secret") - } - - region := os.Getenv("SAC_AWS_REGION") - if region == "" { - return nil, errors.New("SAC_AWS_REGION is not set") + return nil, err } - reigonSecret, err := m.NewSecret(region) + region, err := m.NewSecret(i.Region) if err != nil { - return nil, errors.New("failed to create secret from region") + return nil, err } return &AWSSettings{ - BUCKET_NAME: secretBucketName, - ID: secretID, - SECRET: secretSecret, - REGION: reigonSecret, + BucketName: bucketName, + Id: id, + Secret: secret, + Region: region, }, nil } diff --git a/backend/config/calendar.go b/backend/config/calendar.go index f131b056c..29f78e9f8 100644 --- a/backend/config/calendar.go +++ b/backend/config/calendar.go @@ -1,19 +1,17 @@ package config -import ( - "time" -) +import "time" type CalendarSettings struct { MaxTerminationDate time.Time } type intermediateCalendarSettings struct { - MaxTerminationDate string `yaml:"maxterminationdate"` + MaxTerminationDate string `env:"MAX_TERMINATION_DATE"` } -func (int *intermediateCalendarSettings) into() (*CalendarSettings, error) { - t, err := time.Parse("01-02-2006", int.MaxTerminationDate) +func (i *intermediateCalendarSettings) into() (*CalendarSettings, error) { + t, err := time.Parse("01-02-2006", i.MaxTerminationDate) if err != nil { return nil, err } diff --git a/backend/config/config.go b/backend/config/config.go index b661b1ff2..282e256ed 100644 --- a/backend/config/config.go +++ b/backend/config/config.go @@ -1,100 +1,21 @@ package config import ( - "fmt" - "os" - - "github.com/spf13/viper" + "github.com/caarlos0/env/v11" + "github.com/joho/godotenv" ) -type Settings struct { - Application ApplicationSettings - Database DatabaseSettings - Redis []RedisSettings - SuperUser SuperUserSettings - Auth AuthSettings - AWS AWSSettings - Resend ResendSettings - Calendar CalendarSettings - GoogleSettings OAuthSettings - OutlookSettings OAuthSettings -} - -type intermediateSettings struct { - Application ApplicationSettings `yaml:"application"` - Database intermediateDatabaseSettings `yaml:"database"` - Redis []intermediateRedisSettings `yaml:"redis"` - SuperUser intermediateSuperUserSettings `yaml:"superuser"` - Auth intermediateAuthSettings `yaml:"authsecret"` - Calendar intermediateCalendarSettings `yaml:"calendar"` -} - -func (int *intermediateSettings) into() (*Settings, error) { - databaseSettings, err := int.Database.into() - if err != nil { - return nil, err - } - - redisSettings := make([]RedisSettings, len(int.Redis)) - for i, r := range int.Redis { - redisInstance, err := r.into() - if err != nil { - return nil, err - } - - redisSettings[i] = *redisInstance - } - - superUserSettings, err := int.SuperUser.into() - if err != nil { - return nil, err - } - - authSettings, err := int.Auth.into() +func GetConfiguration(path string) (*Settings, error) { + err := godotenv.Load(path) if err != nil { return nil, err } - calendarSettings, err := int.Calendar.into() - if err != nil { + var intermediateSettings intermediateSettings + if err := env.Parse(&intermediateSettings); err != nil { return nil, err } - return &Settings{ - Application: int.Application, - Database: *databaseSettings, - Redis: redisSettings, - SuperUser: *superUserSettings, - Auth: *authSettings, - Calendar: *calendarSettings, - }, nil -} - -type Environment string - -const ( - EnvironmentLocal Environment = "local" - EnvironmentProduction Environment = "production" -) - -func GetConfiguration(path string, useDevDotEnv bool) (*Settings, error) { - var environment Environment - if env := os.Getenv("APP_ENVIRONMENT"); env != "" { - environment = Environment(env) - } else { - environment = "local" - } - - v := viper.New() - v.SetConfigType("yaml") - v.AddConfigPath(path) - - switch environment { - case EnvironmentLocal: - return readLocal(v, path, useDevDotEnv) - case EnvironmentProduction: - return readProd(v) - default: - return nil, fmt.Errorf("unknown environment: %s", environment) - } + settings, err := intermediateSettings.into() + return settings, err } diff --git a/backend/config/database.go b/backend/config/database.go index 6aaa95ae0..81f771c2a 100644 --- a/backend/config/database.go +++ b/backend/config/database.go @@ -1,7 +1,6 @@ package config import ( - "errors" "fmt" m "github.com/garrettladley/mattress" @@ -16,31 +15,6 @@ type DatabaseSettings struct { RequireSSL bool } -func (int *intermediateDatabaseSettings) into() (*DatabaseSettings, error) { - password, err := m.NewSecret(int.Password) - if err != nil { - return nil, errors.New("failed to create secret from password") - } - - return &DatabaseSettings{ - Username: int.Username, - Password: password, - Port: int.Port, - Host: int.Host, - DatabaseName: int.DatabaseName, - RequireSSL: int.RequireSSL, - }, nil -} - -type intermediateDatabaseSettings struct { - Username string `yaml:"username"` - Password string `yaml:"password"` - Port uint `yaml:"port"` - Host string `yaml:"host"` - DatabaseName string `yaml:"databasename"` - RequireSSL bool `yaml:"requiressl"` -} - func (s *DatabaseSettings) WithoutDb() string { var sslMode string if s.RequireSSL { @@ -50,7 +24,7 @@ func (s *DatabaseSettings) WithoutDb() string { } return fmt.Sprintf("host=%s port=%d user=%s password=%s sslmode=%s", - s.Host, s.Port, s.Username, s.Password.Expose(), sslMode) + s.Host, s.Port, s.Username, (*s.Password).Expose(), sslMode) } func (s *DatabaseSettings) WithDb() string { @@ -65,5 +39,30 @@ func (s *DatabaseSettings) PostgresConn() string { sslMode = "disable" } - return fmt.Sprintf("postgres://%s:%s@%s:%d/%s?sslmode=%s", s.Username, s.Password.Expose(), s.Host, s.Port, s.DatabaseName, sslMode) + return fmt.Sprintf("postgres://%s:%s@%s:%d/%s?sslmode=%s", s.Username, (*s.Password).Expose(), s.Host, s.Port, s.DatabaseName, sslMode) +} + +type intermediateDatabaseSettings struct { + Username string `env:"USERNAME"` + Password string `env:"PASSWORD"` + Port uint `env:"PORT"` + Host string `env:"HOST"` + DatabaseName string `env:"NAME"` + RequireSSL bool `env:"REQUIRE_SSL"` +} + +func (i *intermediateDatabaseSettings) into() (*DatabaseSettings, error) { + password, err := m.NewSecret(i.Password) + if err != nil { + return nil, err + } + + return &DatabaseSettings{ + Username: i.Username, + Password: password, + Port: i.Port, + Host: i.Host, + DatabaseName: i.DatabaseName, + RequireSSL: i.RequireSSL, + }, nil } diff --git a/backend/config/local.go b/backend/config/local.go deleted file mode 100644 index 9cefb4dc0..000000000 --- a/backend/config/local.go +++ /dev/null @@ -1,69 +0,0 @@ -package config - -import ( - "fmt" - - "github.com/joho/godotenv" - "github.com/spf13/viper" -) - -func readLocal(v *viper.Viper, path string, useDevDotEnv bool) (*Settings, error) { - var intermediateSettings intermediateSettings - - env := string(EnvironmentLocal) - - v.SetConfigName(env) - - if err := v.ReadInConfig(); err != nil { - return nil, fmt.Errorf("failed to read %s configuration: %w", env, err) - } - - if err := v.Unmarshal(&intermediateSettings); err != nil { - return nil, fmt.Errorf("failed to unmarshal configuration: %w", err) - } - - settings, err := intermediateSettings.into() - if err != nil { - return nil, fmt.Errorf("failed to convert intermediate settings into final settings: %w", err) - } - - if useDevDotEnv { - err = godotenv.Load(fmt.Sprintf("%s/.env.dev", path)) - } else { - err = godotenv.Load(fmt.Sprintf("%s/.env.template", path)) - } - - if err != nil { - return nil, fmt.Errorf("failed to load %s/.env.template: %w", path, err) - } - - awsSettings, err := readAWSSettings() - if err != nil { - return nil, fmt.Errorf("failed to read AWS settings: %w", err) - } - - settings.AWS = *awsSettings - - resendSettings, err := readResendSettings() - if err != nil { - return nil, fmt.Errorf("failed to read Resend settings: %w", err) - } - - settings.Resend = *resendSettings - - googleSettings, err := readGoogleOAuthSettings() - if err != nil { - return nil, fmt.Errorf("failed to read Google OAuth settings: %w", err) - } - - settings.GoogleSettings = *googleSettings - - outlookSettings, err := readOutlookOAuthSettings() - if err != nil { - return nil, fmt.Errorf("failed to read Outlook OAuth settings: %w", err) - } - - settings.OutlookSettings = *outlookSettings - - return settings, nil -} diff --git a/backend/config/oauth.go b/backend/config/oauth.go index 4c7ac44a7..5f3defff5 100644 --- a/backend/config/oauth.go +++ b/backend/config/oauth.go @@ -2,7 +2,6 @@ package config import ( "errors" - "os" m "github.com/garrettladley/mattress" ) @@ -26,26 +25,18 @@ type OAuthResources struct { OutlookOAuthSettings *OAuthSettings } -/** - * GOOGLE -**/ -func readGoogleOAuthSettings() (*OAuthSettings, error) { - clientID := os.Getenv("GOOGLE_OAUTH_CLIENT_ID") - if clientID == "" { - return nil, errors.New("GOOGLE_OAUTH_CLIENT_ID is not set") - } +type GoogleOAuthSettings struct { + ClientId string `env:"GOOGLE_OAUTH_CLIENT_ID"` + ClientSecret string `env:"GOOGLE_OAUTH_CLIENT_SECRET"` +} - secretClientID, err := m.NewSecret(clientID) +func (i *GoogleOAuthSettings) into() (*OAuthSettings, error) { + secretClientID, err := m.NewSecret(i.ClientId) if err != nil { return nil, errors.New("failed to create secret from client ID") } - clientSecret := os.Getenv("GOOGLE_OAUTH_CLIENT_SECRET") - if clientSecret == "" { - return nil, errors.New("GOOGLE_OAUTH_CLIENT_SECRET is not set") - } - - secretClientSecret, err := m.NewSecret(clientSecret) + secretClientSecret, err := m.NewSecret(i.ClientSecret) if err != nil { return nil, errors.New("failed to create secret from client secret") } @@ -64,26 +55,18 @@ func readGoogleOAuthSettings() (*OAuthSettings, error) { }, nil } -/** - * OUTLOOK -**/ -func readOutlookOAuthSettings() (*OAuthSettings, error) { - clientID := os.Getenv("OUTLOOK_OAUTH_CLIENT_ID") - if clientID == "" { - return nil, errors.New("OUTLOOK_OAUTH_CLIENT_ID is not set") - } +type OutlookOAuthSettings struct { + ClientId string `env:"OUTLOOK_OAUTH_CLIENT_ID"` + ClientSecret string `env:"OUTLOOK_OAUTH_CLIENT_SECRET"` +} - secretClientID, err := m.NewSecret(clientID) +func (i *OutlookOAuthSettings) into() (*OAuthSettings, error) { + secretClientID, err := m.NewSecret(i.ClientId) if err != nil { return nil, errors.New("failed to create secret from client ID") } - clientSecret := os.Getenv("OUTLOOK_OAUTH_CLIENT_SECRET") - if clientSecret == "" { - return nil, errors.New("OUTLOOK_OAUTH_CLIENT_SECRET is not set") - } - - secretClientSecret, err := m.NewSecret(clientSecret) + secretClientSecret, err := m.NewSecret(i.ClientSecret) if err != nil { return nil, errors.New("failed to create secret from client secret") } diff --git a/backend/config/production.go b/backend/config/production.go deleted file mode 100644 index 6caf89653..000000000 --- a/backend/config/production.go +++ /dev/null @@ -1,128 +0,0 @@ -package config - -import ( - "errors" - "fmt" - "os" - "strconv" - - m "github.com/garrettladley/mattress" - "github.com/joho/godotenv" - "github.com/spf13/viper" -) - -type ProductionSettings struct { - Database ProductionDatabaseSettings `yaml:"database"` - Application ProductionApplicationSettings `yaml:"application"` - Calendar CalendarSettings `yaml:"calendar"` -} - -type ProductionDatabaseSettings struct { - RequireSSL bool `yaml:"requiressl"` -} - -type ProductionApplicationSettings struct { - Port uint16 `yaml:"port"` - Host string `yaml:"host"` -} - -func readProd(v *viper.Viper) (*Settings, error) { - var prodSettings ProductionSettings - - env := string(EnvironmentProduction) - - v.SetConfigName(env) - - if err := v.ReadInConfig(); err != nil { - return nil, fmt.Errorf("failed to read %s configuration: %w", env, err) - } - - if err := v.Unmarshal(&prodSettings); err != nil { - return nil, fmt.Errorf("failed to unmarshal configuration: %w", err) - } - - err := godotenv.Load(".env") - if err != nil { - return nil, fmt.Errorf("failed to load .env: %w", err) - } - - appPrefix := "APP_" - applicationPrefix := fmt.Sprintf("%sAPPLICATION__", appPrefix) - dbPrefix := fmt.Sprintf("%sDATABASE__", appPrefix) - superUserPrefix := fmt.Sprintf("%sSUPERUSER__", appPrefix) - authSecretPrefix := fmt.Sprintf("%sAUTHSECRET__", appPrefix) - - portStr := os.Getenv(fmt.Sprintf("%sPORT", appPrefix)) - portInt, err := strconv.ParseUint(portStr, 10, 16) - if err != nil { - return nil, fmt.Errorf("failed to parse port: %w", err) - } - - dbPassword, err := m.NewSecret(os.Getenv(fmt.Sprintf("%sUSERNAME", dbPrefix))) - if err != nil { - return nil, errors.New("failed to create secret from database password") - } - - superPassword, err := m.NewSecret(os.Getenv(fmt.Sprintf("%sPASSWORD", superUserPrefix))) - if err != nil { - return nil, errors.New("failed to create secret from super user password") - } - - authAccessKey, err := m.NewSecret(os.Getenv(fmt.Sprintf("%sACCESS_TOKEN", authSecretPrefix))) - if err != nil { - return nil, errors.New("failed to create secret from access token") - } - - authRefreshKey, err := m.NewSecret(os.Getenv(fmt.Sprintf("%sREFRESH_TOKEN", authSecretPrefix))) - if err != nil { - return nil, errors.New("failed to create secret from refresh token") - } - - awsSettings, err := readAWSSettings() - if err != nil { - return nil, fmt.Errorf("failed to read AWS settings: %w", err) - } - - resendSettings, err := readResendSettings() - if err != nil { - return nil, fmt.Errorf("failed to read Resend settings: %w", err) - } - - googleSettings, err := readGoogleOAuthSettings() - if err != nil { - return nil, fmt.Errorf("failed to read Google OAuth settings: %w", err) - } - - outlookSettings, err := readOutlookOAuthSettings() - if err != nil { - return nil, fmt.Errorf("failed to read Outlook OAuth settings: %w", err) - } - - return &Settings{ - Application: ApplicationSettings{ - Port: uint16(portInt), - Host: prodSettings.Application.Host, - BaseUrl: os.Getenv(fmt.Sprintf("%sBASE_URL", applicationPrefix)), - }, - Database: DatabaseSettings{ - Username: os.Getenv(fmt.Sprintf("%sUSERNAME", dbPrefix)), - Password: dbPassword, - Host: os.Getenv(fmt.Sprintf("%sHOST", dbPrefix)), - Port: uint(portInt), - DatabaseName: os.Getenv(fmt.Sprintf("%sDATABASE_NAME", dbPrefix)), - RequireSSL: prodSettings.Database.RequireSSL, - }, - SuperUser: SuperUserSettings{ - Password: superPassword, - }, - Auth: AuthSettings{ - AccessKey: authAccessKey, - RefreshKey: authRefreshKey, - }, - AWS: *awsSettings, - Resend: *resendSettings, - Calendar: prodSettings.Calendar, - GoogleSettings: *googleSettings, - OutlookSettings: *outlookSettings, - }, nil -} diff --git a/backend/config/redis.go b/backend/config/redis.go index ab1ef9667..44d5f8036 100644 --- a/backend/config/redis.go +++ b/backend/config/redis.go @@ -7,12 +7,12 @@ import ( ) type RedisSettings struct { - Username string `yaml:"username"` - Host string `yaml:"host"` - Port uint `yaml:"port"` - Password *m.Secret[string] `yaml:"password"` - DB int `yaml:"db"` - // TLSConfig *TLSConfig `yaml:"tlsconfig"` + Username string + Password *m.Secret[string] + Host string + Port uint + DB int + // TLSConfig *TLSConfig } func (int *intermediateRedisSettings) into() (*RedisSettings, error) { @@ -23,19 +23,19 @@ func (int *intermediateRedisSettings) into() (*RedisSettings, error) { return &RedisSettings{ Username: int.Username, + Password: password, Host: int.Host, Port: int.Port, - Password: password, DB: int.DB, // TLSConfig: int.TLSConfig.into(), }, nil } type intermediateRedisSettings struct { - Username string `yaml:"username"` - Host string `yaml:"host"` - Port uint `yaml:"port"` - Password string `yaml:"password"` - DB int `yaml:"db"` - // TLSConfig *intermediateTLSConfig `yaml:"tlsconfig"` + Username string `env:"USERNAME"` + Password string `env:"PASSWORD"` + Host string `env:"HOST"` + Port uint `env:"PORT"` + DB int `env:"DB"` + // TLSConfig *intermediateTLSConfig `env:"TLS_CONFIG"` } diff --git a/backend/config/resend.go b/backend/config/resend.go index be10b52f0..73c724d39 100644 --- a/backend/config/resend.go +++ b/backend/config/resend.go @@ -1,8 +1,7 @@ package config import ( - "errors" - "os" + "fmt" m "github.com/garrettladley/mattress" ) @@ -11,18 +10,17 @@ type ResendSettings struct { APIKey *m.Secret[string] } -func readResendSettings() (*ResendSettings, error) { - apiKey := os.Getenv("SAC_RESEND_API_KEY") - if apiKey == "" { - return nil, errors.New("SAC_RESEND_API_KEY is not set") - } +type intermediateResendSettings struct { + APIKey string `env:"API_KEY"` +} - secretAPIKey, err := m.NewSecret(apiKey) +func (i *intermediateResendSettings) into() (*ResendSettings, error) { + apiKey, err := m.NewSecret(i.APIKey) if err != nil { - return nil, errors.New("failed to create secret from api key") + return nil, fmt.Errorf("failed to create secret from API key: %s", err.Error()) } return &ResendSettings{ - APIKey: secretAPIKey, + APIKey: apiKey, }, nil } diff --git a/backend/config/settings.go b/backend/config/settings.go new file mode 100644 index 000000000..c4856b8ac --- /dev/null +++ b/backend/config/settings.go @@ -0,0 +1,103 @@ +package config + +type Settings struct { + Application ApplicationSettings + Database DatabaseSettings + RedisActiveTokens RedisSettings + RedisBlacklist RedisSettings + RedisLimiter RedisSettings + SuperUser SuperUserSettings + Auth AuthSettings + AWS AWSSettings + Resend ResendSettings + Calendar CalendarSettings + Google OAuthSettings + Outlook OAuthSettings +} + +type intermediateSettings struct { + Application ApplicationSettings `envPrefix:"SAC_APPLICATION_"` + Database intermediateDatabaseSettings `envPrefix:"SAC_DB_"` + RedisActiveTokens intermediateRedisSettings `envPrefix:"SAC_REDIS_ACTIVE_TOKENS_"` + RedisBlacklist intermediateRedisSettings `envPrefix:"SAC_REDIS_BLACKLIST_"` + RedisLimiter intermediateRedisSettings `envPrefix:"SAC_REDIS_LIMITER_"` + SuperUser intermediateSuperUserSettings `envPrefix:"SAC_SUDO_"` + Auth intermediateAuthSettings `envPrefix:"SAC_AUTH_"` + AWS intermediateAWSSettings `envPrefix:"SAC_AWS_"` + Resend intermediateResendSettings `envPrefix:"SAC_RESEND_"` + Calendar intermediateCalendarSettings `envPrefix:"SAC_CALENDAR_"` + GoogleSettings GoogleOAuthSettings `envPrefix:"SAC_GOOGLE_OAUTH"` + OutlookSettings OutlookOAuthSettings `envPrefix:"SAC_OUTLOOK_OAUTH"` +} + +func (i *intermediateSettings) into() (*Settings, error) { + database, err := i.Database.into() + if err != nil { + return nil, err + } + + redisActiveTokens, err := i.RedisActiveTokens.into() + if err != nil { + return nil, err + } + + redisBlacklist, err := i.RedisBlacklist.into() + if err != nil { + return nil, err + } + + redisLimiter, err := i.RedisLimiter.into() + if err != nil { + return nil, err + } + + superUser, err := i.SuperUser.into() + if err != nil { + return nil, err + } + + auth, err := i.Auth.into() + if err != nil { + return nil, err + } + + aws, err := i.AWS.into() + if err != nil { + return nil, err + } + + resend, err := i.Resend.into() + if err != nil { + return nil, err + } + + calendar, err := i.Calendar.into() + if err != nil { + return nil, err + } + + google, err := i.GoogleSettings.into() + if err != nil { + return nil, err + } + + outlook, err := i.OutlookSettings.into() + if err != nil { + return nil, err + } + + return &Settings{ + Application: i.Application, + Database: *database, + RedisActiveTokens: *redisActiveTokens, + RedisBlacklist: *redisBlacklist, + RedisLimiter: *redisLimiter, + SuperUser: *superUser, + Auth: *auth, + AWS: *aws, + Resend: *resend, + Calendar: *calendar, + Google: *google, + Outlook: *outlook, + }, nil +} diff --git a/backend/config/super_user.go b/backend/config/sudo.go similarity index 51% rename from backend/config/super_user.go rename to backend/config/sudo.go index 2a75c88ef..823f09cde 100644 --- a/backend/config/super_user.go +++ b/backend/config/sudo.go @@ -1,7 +1,7 @@ package config import ( - "errors" + "fmt" m "github.com/garrettladley/mattress" ) @@ -9,15 +9,14 @@ import ( type SuperUserSettings struct { Password *m.Secret[string] } - type intermediateSuperUserSettings struct { - Password string `yaml:"password"` + Password string `env:"PASSWORD"` } -func (int *intermediateSuperUserSettings) into() (*SuperUserSettings, error) { - password, err := m.NewSecret(int.Password) +func (i *intermediateSuperUserSettings) into() (*SuperUserSettings, error) { + password, err := m.NewSecret(i.Password) if err != nil { - return nil, errors.New("failed to create secret from password") + return nil, fmt.Errorf("failed to create secret from password: %s", err.Error()) } return &SuperUserSettings{ diff --git a/backend/database/store/redis.go b/backend/database/store/redis.go index f8235c1f2..c5e1c7c6c 100644 --- a/backend/database/store/redis.go +++ b/backend/database/store/redis.go @@ -24,25 +24,11 @@ func NewStores(limiter LimiterInterface, blacklist BlacklistInterface, activeTok } func ConfigureRedis(settings config.Settings) *Stores { - var activeTokens *ActiveToken - var blacklist *Blacklist - var limiter *Limiter - - for _, service := range settings.Redis { - client := NewRedisClient(service.Username, service.Host, service.Port, service.Password, service.DB) - switch service.Username { - case "redis_active_tokens": - activeTokens = NewActiveToken(client) - case "redis_blacklist": - blacklist = NewBlacklist(client) - case "redis_limiter": - limiter = NewLimiter(client) - default: - slog.Error("unknown redis service", service.Username, "skipping...") - } - } - - stores := NewStores(limiter, blacklist, activeTokens) + stores := NewStores( + NewLimiter(NewRedisClient(settings.RedisLimiter.Username, settings.RedisLimiter.Host, settings.RedisLimiter.Port, settings.RedisLimiter.Password, settings.RedisLimiter.DB)), + NewBlacklist(NewRedisClient(settings.RedisBlacklist.Username, settings.RedisBlacklist.Host, settings.RedisBlacklist.Port, settings.RedisBlacklist.Password, settings.RedisBlacklist.DB)), + NewActiveToken(NewRedisClient(settings.RedisActiveTokens.Username, settings.RedisActiveTokens.Host, settings.RedisActiveTokens.Port, settings.RedisActiveTokens.Password, settings.RedisActiveTokens.DB)), + ) MustEstablishConn() @@ -86,7 +72,7 @@ func restartServices() error { err := cmd.Run() if err != nil { - return fmt.Errorf("error restarting services: %s \nconsole output: %s", err.Error(), out.String()) + return fmt.Errorf("error restarting services: %s\nconsole output: %s", err.Error(), out.String()) } slog.Info("Services restarted successfully.") diff --git a/backend/go.mod b/backend/go.mod index 14d39ee4c..10a101f91 100644 --- a/backend/go.mod +++ b/backend/go.mod @@ -19,7 +19,6 @@ require ( github.com/mcnijman/go-emailaddress v1.1.1 github.com/redis/go-redis/v9 v9.5.1 github.com/resend/resend-go/v2 v2.6.0 - github.com/spf13/viper v1.18.2 github.com/swaggo/swag v1.16.3 go.opentelemetry.io/otel/sdk v1.27.0 go.opentelemetry.io/otel/trace v1.27.0 @@ -48,7 +47,7 @@ require ( github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/lib/pq v1.10.9 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.opentelemetry.io/contrib v1.17.0 // indirect go.opentelemetry.io/otel/metric v1.27.0 // indirect go.uber.org/atomic v1.11.0 // indirect @@ -57,8 +56,8 @@ require ( require ( github.com/KyleBanks/depth v1.2.1 // indirect github.com/andybalholm/brotli v1.1.0 // indirect + github.com/caarlos0/env/v11 v11.0.1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/gabriel-vasile/mimetype v1.4.3 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/jsonreference v0.21.0 // indirect @@ -69,7 +68,6 @@ require ( github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 github.com/gofiber/contrib/otelfiber v1.0.10 github.com/golang-migrate/migrate/v4 v4.17.1 - github.com/hashicorp/hcl v1.0.0 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20231201235250-de7065d80cb9 // indirect github.com/jackc/pgx/v5 v5.5.5 // indirect @@ -78,32 +76,20 @@ require ( github.com/josharian/intern v1.0.0 // indirect github.com/klauspost/compress v1.17.7 // indirect github.com/leodido/go-urn v1.4.0 // indirect - github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect - github.com/pelletier/go-toml/v2 v2.2.0 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect - github.com/sagikazarmark/locafero v0.4.0 // indirect - github.com/sagikazarmark/slog-shim v0.1.0 // indirect - github.com/sourcegraph/conc v0.3.0 // indirect - github.com/spf13/afero v1.11.0 // indirect - github.com/spf13/cast v1.6.0 // indirect - github.com/spf13/pflag v1.0.5 // indirect - github.com/subosito/gotenv v1.6.0 // indirect github.com/swaggo/files/v2 v2.0.0 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasthttp v1.52.0 // indirect github.com/valyala/tcplisten v1.0.0 // indirect go.opentelemetry.io/otel v1.27.0 go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.27.0 - go.uber.org/multierr v1.11.0 // indirect - golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 // indirect golang.org/x/net v0.25.0 // indirect golang.org/x/sys v0.20.0 // indirect golang.org/x/tools v0.20.0 // indirect - gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/backend/go.sum b/backend/go.sum index d11f836aa..45af0b6b1 100644 --- a/backend/go.sum +++ b/backend/go.sum @@ -20,6 +20,8 @@ github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= +github.com/caarlos0/env/v11 v11.0.1 h1:A8dDt9Ub9ybqRSUF3fQc/TA/gTam2bKT4Pit+cwrsPs= +github.com/caarlos0/env/v11 v11.0.1/go.mod h1:2RC3HQu8BQqtEK3V4iHPxj0jOdWdbPpWJ6pOueeU1xM= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -38,10 +40,6 @@ github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKoh github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= -github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= -github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= -github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= github.com/garrettladley/fiberpaginate v1.0.5 h1:H1Kj7UQBhaBxbCcDeSY3wlW9Hutq/hJ8NSEM86T9vAs= @@ -69,8 +67,6 @@ github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJn github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= github.com/go-playground/validator/v10 v10.20.0 h1:K9ISHbSaI0lyB2eWMPJo+kOS/FBExVwjEviJTixqxL8= github.com/go-playground/validator/v10 v10.20.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= -github.com/go-resty/resty/v2 v2.13.1 h1:x+LHXBI2nMB1vqndymf26quycC4aggYJ7DECYbiz03g= -github.com/go-resty/resty/v2 v2.13.1/go.mod h1:GznXlLxkq6Nh4sU59rPmUw3VtgpO3aS96ORAI6Q7d+0= github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 h1:TQcrn6Wq+sKGkpyPvppOz99zsMBaUOKXq6HSv655U1c= github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA= @@ -98,8 +94,6 @@ github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/huandu/go-assert v1.1.6 h1:oaAfYxq9KNDi9qswn/6aE0EydfxSa+tWZC1KabNitYs= github.com/huandu/go-assert v1.1.6/go.mod h1:JuIfbmYG9ykwvuxoJ3V8TB5QP+3+ajIA54Y44TmkMxs= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= @@ -134,8 +128,6 @@ github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= @@ -147,8 +139,6 @@ github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZ github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mcnijman/go-emailaddress v1.1.1 h1:AGhgVDG3tCDaL0/Vc6erlPQjDuDN3dAT7rRdgFtetr0= github.com/mcnijman/go-emailaddress v1.1.1/go.mod h1:5whZrhS8Xp5LxO8zOD35BC+b76kROtsh+dPomeRt/II= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= @@ -157,8 +147,6 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/pelletier/go-toml/v2 v2.2.0 h1:QLgLl2yMN7N+ruc31VynXs1vhMZa7CeHHejIeBAsoHo= -github.com/pelletier/go-toml/v2 v2.2.0/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/philhofer/fwd v1.1.2 h1:bnDivRJ1EWPjUIRXV5KfORO897HTbpFAQddBdE8t7Gw= github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -175,37 +163,15 @@ github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= -github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= -github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= -github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= -github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/smarty/assertions v1.15.0 h1:cR//PqUBUiQRakZWqBiFFQ9wb8emQGDb0HeGdqGByCY= github.com/smarty/assertions v1.15.0/go.mod h1:yABtdzeQs6l1brC900WlRNwj6ZR55d7B+E8C6HtKdec= github.com/smartystreets/goconvey v1.8.1 h1:qGjIddxOk4grTu9JPOU31tVfq3cNdBlNa5sSznIX1xY= github.com/smartystreets/goconvey v1.8.1/go.mod h1:+/u4qLyY6x1jReYOp7GOM2FSt8aP9CzCZL03bI28W60= -github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= -github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= -github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= -github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= -github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= -github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= -github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= -github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/swaggo/files/v2 v2.0.0 h1:hmAt8Dkynw7Ssz46F6pn8ok6YmGZqHSVLZ+HQM7i0kw= github.com/swaggo/files/v2 v2.0.0/go.mod h1:24kk2Y9NYEJ5lHuCra6iVwkMjIekMCaFq/0JQj66kyM= github.com/swaggo/swag v1.16.3 h1:PnCYjPCah8FK4I26l2F/KQ4yz3sILcVUN3cTlBFA9Pg= @@ -218,7 +184,6 @@ github.com/valyala/fasthttp v1.52.0 h1:wqBQpxH71XW0e2g+Og4dzQM8pk34aFYlA1Ga8db7g github.com/valyala/fasthttp v1.52.0/go.mod h1:hf5C4QnVMkNXMspnsUlfM3WitlgYflyhHYoKol/szxQ= github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8= github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.opentelemetry.io/contrib v1.17.0 h1:lJJdtuNsP++XHD7tXDYEFSpsqIc7DzShuXMR5PwkmzA= go.opentelemetry.io/contrib v1.17.0/go.mod h1:gIzjwWFoGazJmtCaDgViqOSJPde2mCWzv60o0bWPcZs= go.opentelemetry.io/contrib/propagators/b3 v1.17.0 h1:ImOVvHnku8jijXqkwCSyYKRDt2YrnGXD4BbhcpfbfJo= @@ -239,74 +204,27 @@ go.opentelemetry.io/otel/trace v1.27.0 h1:IqYb813p7cmbHk0a5y6pD5JPakbVfftRXABGt5 go.opentelemetry.io/otel/trace v1.27.0/go.mod h1:6RiD1hkAprV4/q+yd2ln1HG9GoPx39SuvvstaLBl+l4= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= -go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 h1:985EYyeCOxTpcgOTJpflJUwOeEz0CQOdPt73OzpE9F8= -golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180911220305-26e67e76b6c3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= -gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= diff --git a/backend/integrations/file/file.go b/backend/integrations/file/file.go index f47e13f4e..f25147727 100644 --- a/backend/integrations/file/file.go +++ b/backend/integrations/file/file.go @@ -44,8 +44,8 @@ type AWSClient struct { func NewAWSProvider(settings config.AWSSettings) FileClientInterface { sess, err := session.NewSession(&aws.Config{ - Region: aws.String(settings.REGION.Expose()), - Credentials: credentials.NewStaticCredentials(settings.ID.Expose(), settings.SECRET.Expose(), ""), + Region: aws.String(settings.Region.Expose()), + Credentials: credentials.NewStaticCredentials(settings.Id.Expose(), settings.Secret.Expose(), ""), }) if err != nil { return nil @@ -55,7 +55,7 @@ func NewAWSProvider(settings config.AWSSettings) FileClientInterface { } func (aw *AWSClient) GetFileURL(fileURL string) *string { - fileURL = fmt.Sprintf("https://s3.amazonaws.com/%s/%s", aw.Settings.BUCKET_NAME.Expose(), fileURL) + fileURL = fmt.Sprintf("https://s3.amazonaws.com/%s/%s", aw.Settings.BucketName.Expose(), fileURL) return &fileURL } @@ -119,7 +119,7 @@ func (aw *AWSClient) UploadFile(folder string, fileHeader *multipart.FileHeader, svc := s3.New(aw.session) - bucket := aw.Settings.BUCKET_NAME.Expose() + bucket := aw.Settings.BucketName.Expose() key := fmt.Sprintf("%s/%s", folder, *fileName) _, err = svc.PutObject(&s3.PutObjectInput{ @@ -143,7 +143,7 @@ func (aw *AWSClient) UploadFile(folder string, fileHeader *multipart.FileHeader, func (aw *AWSClient) DeleteFile(fileURL string) error { svc := s3.New(aw.session) - bucket := aw.Settings.BUCKET_NAME.Expose() + bucket := aw.Settings.BucketName.Expose() key := fileURL[len(fmt.Sprintf("https://s3.amazonaws.com/%s/", bucket)):] _, err := svc.DeleteObject(&s3.DeleteObjectInput{ diff --git a/backend/main.go b/backend/main.go index 790d3d189..a3a32611a 100644 --- a/backend/main.go +++ b/backend/main.go @@ -16,7 +16,6 @@ import ( "github.com/GenerateNU/sac/backend/integrations/email" "github.com/GenerateNU/sac/backend/integrations/file" "github.com/GenerateNU/sac/backend/integrations/oauth" - "github.com/GenerateNU/sac/backend/search" "github.com/GenerateNU/sac/backend/server" "github.com/GenerateNU/sac/backend/telemetry" "github.com/GenerateNU/sac/backend/utilities" @@ -24,13 +23,11 @@ import ( func main() { onlyMigrate := flag.Bool("only-migrate", false, "Specify if you want to only perform the database migration") - seedSearch := flag.Bool("seed-search", false, "Specify if you want to seed the opensearch nodes.") - configPath := flag.String("config", filepath.Join("..", "config"), "Specify the path to the config directory") - useDevDotEnv := flag.Bool("use-dev-dot-env", true, "Specify if you want to use the .env.dev file") + seedSearch := flag.Bool("seed-search", true, "Specify if you want to seed the opensearch nodes.") + configPath := flag.String("config", filepath.Join("..", "config", ".env.dev"), "Specify the path to the config file (.env)") flag.Parse() - - config, err := config.GetConfiguration(*configPath, *useDevDotEnv) + config, err := config.GetConfiguration(*configPath) if err != nil { utilities.Exit("Error getting configuration: %s", err.Error()) } @@ -50,13 +47,14 @@ func main() { } if *seedSearch { - if err := search.SeedClubs(db); err != nil { - return - } - - if err := search.SeedEvents(db); err != nil { - return - } + slog.Info("to appease linter", "seedSearch", *seedSearch) + // if err := search.SeedClubs(db); err != nil { + // return + // } + + // if err := search.SeedEvents(db); err != nil { + // return + // } } err = database.ConnPooling(db) @@ -98,10 +96,10 @@ func checkServerRunning(host string, port uint16) error { func configureIntegrations(config *config.Settings) integrations.Integrations { googleClient := oauth.GoogleOAuthClient{ - OAuthConfig: config.GoogleSettings, + OAuthConfig: config.Google, } outlookClient := oauth.OutlookOAuthClient{ - OAuthConfig: config.OutlookSettings, + OAuthConfig: config.Outlook, } oauthResources := oauth.OAuthResources{ @@ -114,6 +112,5 @@ func configureIntegrations(config *config.Settings) integrations.Integrations { Email: email.NewResendClient(config.Resend, true), OAuth: oauthResources, } - return integrations } diff --git a/backend/search/seed.go b/backend/search/seed.go index a1b1ffc8a..641653941 100644 --- a/backend/search/seed.go +++ b/backend/search/seed.go @@ -1,12 +1,13 @@ package search import ( - "encoding/json" "fmt" "net/http" "os" "strings" + go_json "github.com/goccy/go-json" + "github.com/GenerateNU/sac/backend/constants" "github.com/GenerateNU/sac/backend/entities/models" search_types "github.com/GenerateNU/sac/backend/search/types" @@ -43,13 +44,13 @@ func SeedClubs(db *gorm.DB) error { indexData := search_types.BulkRequestCreate{} indexData.Create.Index = "clubs" indexData.Create.Id = club.ID.String() - indexJson, err := json.Marshal(indexData) + indexJson, err := go_json.Marshal(indexData) if err != nil { return err } clubData := club.ToSearchDocument() - clubJson, err := json.Marshal(clubData) + clubJson, err := go_json.Marshal(clubData) if err != nil { return err } @@ -82,7 +83,6 @@ func SeedEvents(db *gorm.DB) error { return err } defer resp.Body.Close() - var events []models.Event if err := db.Preload("Tag").Preload("Clubs").Not("is_draft = ?", true).Not("is_archived = ?", true).Find(&events).Error; err != nil { @@ -95,13 +95,13 @@ func SeedEvents(db *gorm.DB) error { indexData := search_types.BulkRequestCreate{} indexData.Create.Index = "events" indexData.Create.Id = event.ID.String() - indexJson, err := json.Marshal(indexData) + indexJson, err := go_json.Marshal(indexData) if err != nil { return err } eventData := event.ToSearchDocument() - eventJson, err := json.Marshal(eventData) + eventJson, err := go_json.Marshal(eventData) if err != nil { return err } diff --git a/backend/tests/api/helpers/app.go b/backend/tests/api/helpers/app.go index ce529b6b8..661f473d5 100644 --- a/backend/tests/api/helpers/app.go +++ b/backend/tests/api/helpers/app.go @@ -26,7 +26,7 @@ func spawnApp() (*TestApp, error) { return nil, err } - configuration, err := config.GetConfiguration(filepath.Join("..", "..", "..", "config"), false) + configuration, err := config.GetConfiguration(filepath.Join("..", "..", "..", "config")) if err != nil { return nil, err } diff --git a/backend/utilities/json.go b/backend/utilities/json.go index 7841c2a08..c55ad3eac 100644 --- a/backend/utilities/json.go +++ b/backend/utilities/json.go @@ -1,9 +1,9 @@ package utilities -import "encoding/json" +import go_json "github.com/goccy/go-json" func ToJsonString(p interface{}) (string, error) { - jsonData, err := json.Marshal(p) + jsonData, err := go_json.Marshal(p) if err != nil { return "", err } diff --git a/cli/go.sum b/cli/go.sum index 457707513..3803ea3ae 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -3,6 +3,7 @@ github.com/awnumar/memcall v0.2.0 h1:sRaogqExTOOkkNwO9pzJsL8jrOV29UuUW7teRMfbqtI github.com/awnumar/memguard v0.22.5 h1:PH7sbUVERS5DdXh3+mLo8FDcl1eIeVjJVYMnyuYpvuI= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/garrettladley/mattress v0.4.0 h1:ZB3iqyc5q6bqIryNfsh2FMcbMdnV1XEryvqivouceQE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= diff --git a/cli/helpers/database.go b/cli/helpers/database.go index 85fe05c03..cf7a2fc89 100644 --- a/cli/helpers/database.go +++ b/cli/helpers/database.go @@ -22,7 +22,7 @@ func InitDB() error { } func DownDB() error { - config, err := config.GetConfiguration(CONFIG, false) + config, err := config.GetConfiguration(CONFIG) if err != nil { return err } @@ -42,7 +42,7 @@ func DownDB() error { } func CleanTestDBs() error { - config, err := config.GetConfiguration(CONFIG, false) + config, err := config.GetConfiguration(CONFIG) if err != nil { return err } @@ -102,7 +102,7 @@ func CleanTestDBs() error { } func InsertDB() error { - config, err := config.GetConfiguration(CONFIG, false) + config, err := config.GetConfiguration(CONFIG) if err != nil { return err } diff --git a/config/.env.template b/config/.env.template index 66e72ed9e..3d49343e2 100644 --- a/config/.env.template +++ b/config/.env.template @@ -1,13 +1,52 @@ -SAC_PINECONE_INDEX_HOST="https://SAC_PINECONE_INDEX_HOST.com" -SAC_PINECONE_API_KEY="SAC_PINECONE_API_KEY" -SAC_OPENAI_API_KEY="SAC_OPENAI_API_KEY" -SAC_RESEND_API_KEY="SAC_RESEND_API_KEY" +SAC_APPLICATION_PORT="8080" +SAC_APPLICATION_HOST="127.0.0.1" +SAC_APPLICATION_BASE_URL="http://127.0.0.1" + +SAC_DB_USERNAME="postgres" +SAC_DB_PASSWORD="password" +SAC_DB_PORT="5432" +SAC_DB_HOST="127.0.0.1" +SAC_DB_NAME="sac" +SAC_DB_REQUIRE_SSL="false" + +SAC_REDIS_ACTIVE_TOKENS_USERNAME="redis_active_tokens" +SAC_REDIS_ACTIVE_TOKENS_PASSWORD="redis_active_token!#1" +SAC_REDIS_ACTIVE_TOKENS_HOST="127.0.0.1" +SAC_REDIS_ACTIVE_TOKENS_PORT="6379" +SAC_REDIS_ACTIVE_TOKENS_DB="0" + +SAC_REDIS_BLACKLIST_USERNAME="redis_blacklist" +SAC_REDIS_BLACKLIST_PASSWORD="redis_blacklist!#2" +SAC_REDIS_BLACKLIST_HOST="127.0.0.1" +SAC_REDIS_BLACKLIST_PORT="6380" +SAC_REDIS_BLACKLIST_DB="0" + +SAC_REDIS_LIMITER_USERNAME="redis_limiter" +SAC_REDIS_LIMITER_PASSWORD="redis_limiter!#3" +SAC_REDIS_LIMITER_HOST="127.0.0.1" +SAC_REDIS_LIMITER_PORT="6381" +SAC_REDIS_LIMITER_DB="0" + + +SAC_AWS_BUCKET_NAME="SAC_AWS_BUCKET_NAME" +SAC_AWS_ID="SAC_AWS_ID" +SAC_AWS_SECRET="SAC_AWS_SECRET" +SAC_AWS_REGION="SAC_AWS_REGION" + +SAC_SUDO_PASSWORD="Password#!1" + +SAC_AUTH_ACCESS_KEY="g(r|##*?>\Qp}h37e+,T2" +SAC_AUTH_REFRESH_KEY="amk*2!gG}1i\"8D9RwJS\$p" SAC_AWS_BUCKET_NAME="SAC_AWS_BUCKET_NAME" SAC_AWS_ID="SAC_AWS_ID" SAC_AWS_SECRET="SAC_AWS_SECRET" SAC_AWS_REGION="SAC_AWS_REGION" +SAC_RESEND_API_KEY="SAC_RESEND_API_KEY" + +SAC_CALENDAR_MAX_TERMINATION_DATE="12-31-2024" + GOOGLE_OAUTH_CLIENT_ID=GOOGLE_OAUTH_CLIENT_ID GOOGLE_OAUTH_CLIENT_SECRET=GOOGLE_OAUTH_CLIENT_SECRET GOOGLE_API_KEY=GOOGLE_API_KEY @@ -15,5 +54,3 @@ GOOGLE_API_KEY=GOOGLE_API_KEY OUTLOOK_OAUTH_CLIENT_ID=test OUTLOOK_OAUTH_CLIENT_SECRET=test -AUTHSECRET__ACCESS_TOKEN=test -AUTHSECRET__REFRESH_TOKEN=test diff --git a/go.work.sum b/go.work.sum index d9644ff83..5fb52f710 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1,4 +1,3 @@ -cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= cloud.google.com/go v0.110.10 h1:LXy9GEO+timppncPIAZoOj3l58LIU9k+kn48AN7IO3Y= @@ -34,11 +33,6 @@ cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiV cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/firestore v1.14.0/go.mod h1:96MVaHLsEhbvkBEdZgfN+AS/GIkco1LRpH9Xp9YZfzQ= -cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= -cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI= -cloud.google.com/go/spanner v1.51.0/go.mod h1:c5KNo5LQ1X5tJwma9rSQZsXNBDNvj4/n8BVc3LNahq0= -cloud.google.com/go/storage v1.35.1/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= cloud.google.com/go/contactcenterinsights v1.11.3/go.mod h1:HHX5wrz5LHVAwfI2smIotQG9x8Qd6gYilaHcLLLmNis= cloud.google.com/go/container v1.27.1/go.mod h1:b1A1gJeTBXVLQ6GGw9/9M4FG94BEGsqJ5+t4d/3N7O4= cloud.google.com/go/containeranalysis v0.11.3/go.mod h1:kMeST7yWFQMGjiG9K7Eov+fPNQcGhb8mXj/UcTiWw9U= @@ -151,7 +145,6 @@ github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2 h1:+5VZ72z0Qan5Bog5C+ZkgSq github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0 h1:u/LLAOFgsMv7HmNL4Qufg58y+qElGOt5qv0z1mURkRY= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0/go.mod h1:2e8rMJtl2+2j+HXbTBwnyGpm5Nou7KhvSfxOq8JpTag= -github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest/adal v0.9.16 h1:P8An8Z9rH1ldbOLdFpxYorgOt2sywL9V24dAwWHPuGc= @@ -162,13 +155,10 @@ github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+Z github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= -github.com/ClickHouse/clickhouse-go v1.4.3/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= -github.com/GenerateNU/sac/backend v0.0.0-20240427140745-74eb4ec0f597/go.mod h1:VEuNTR6WQ0OQ5fjMjoRcIymCMjRLdRUM611roK9yQYQ= -github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/ClickHouse/clickhouse-go v1.4.3 h1:iAFMa2UrQdR5bHJ2/yaSLffZkxpcOYQMCUuKeNXGdqc= github.com/ClickHouse/clickhouse-go v1.4.3/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= +github.com/GenerateNU/sac/backend v0.0.0-20240427140745-74eb4ec0f597/go.mod h1:VEuNTR6WQ0OQ5fjMjoRcIymCMjRLdRUM611roK9yQYQ= github.com/PuerkitoBio/goquery v1.8.1 h1:uQxhNlArOIdbrH1tr0UXwdVFgDcZDrZVdcpygAcwmWM= github.com/PuerkitoBio/goquery v1.8.1/go.mod h1:Q8ICL1kNUJ2sXGoAhPGUdYDJvgQgHzJsnnd3H7Ho5jQ= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= @@ -181,10 +171,7 @@ github.com/a-h/pathvars v0.0.14 h1:5/C0U5zuUtvAfVQCR5vow4E4MIRU7QIOLz8z26EeeQw= github.com/a-h/pathvars v0.0.14/go.mod h1:7rLTtvDVyKneR/N65hC0lh2sZ2KRyAmWFaOvv00uxb0= github.com/a-h/protocol v0.0.0-20230224160810-b4eec67c1c22 h1:ehNdbGOAR8KTrLY/S90/9RJ4p/cgeNdt1sRt0DSiRWs= github.com/a-h/protocol v0.0.0-20230224160810-b4eec67c1c22/go.mod h1:Gm0KywveHnkiIhqFSMZglXwWZRQICg3KDWLYdglv/d8= -github.com/a-h/templ v0.2.697/go.mod h1:5cqsugkq9IerRNucNsI4DEamdHPsoGMQy99DzydLhM8= github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c= github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= github.com/apache/arrow/go/v10 v10.0.1 h1:n9dERvixoC/1JjDmBcs9FPaEryoANa2sCgVFo6ez9cI= @@ -194,11 +181,9 @@ github.com/apache/thrift v0.16.0 h1:qEy6UW60iVOlUy+b9ZR0d5WzUWYGOo4HfopoyBaNmoY= github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= -github.com/awnumar/memcall v0.2.0/go.mod h1:S911igBPR9CThzd/hYQQmTc9SWNu3ZHIlCGaWsWsoJo= -github.com/awnumar/memguard v0.22.5/go.mod h1:+APmZGThMBWjnMlKiSM1X7MVpbIVewen2MTkqWkA/zE= -github.com/aws/aws-sdk-go v1.51.30/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= github.com/aws/aws-sdk-go v1.50.5 h1:H2Aadcgwr7a2aqS6ZwcE+l1mA6ZrTseYCvjw2QLmxIA= github.com/aws/aws-sdk-go v1.50.5/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= +github.com/aws/aws-sdk-go v1.51.30/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= github.com/aws/aws-sdk-go-v2 v1.16.16 h1:M1fj4FE2lB4NzRb9Y0xdWsn2P0+2UHVxwKyOa4YJNjk= github.com/aws/aws-sdk-go-v2 v1.16.16/go.mod h1:SwiyXi/1zTUZ6KIAmLK5V5ll8SiURNUYOqTerZPaF9k= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.8 h1:tcFliCWne+zOuUfKNRn8JdFBuWPDuISDH08wD2ULkhk= @@ -225,15 +210,12 @@ github.com/aws/aws-sdk-go-v2/service/s3 v1.27.11 h1:3/gm/JTX9bX8CpzTgIlrtYpB3EVB github.com/aws/aws-sdk-go-v2/service/s3 v1.27.11/go.mod h1:fmgDANqTUCxciViKl9hb/zD5LFbvPINFRgWhDbR+vZo= github.com/aws/smithy-go v1.13.3 h1:l7LYxGuzK6/K+NzJ2mC+VvLUbae0sL3bXU//04MkmnA= github.com/aws/smithy-go v1.13.3/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= -github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= -github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cli/browser v1.3.0 h1:LejqCrpWr+1pRqmEPDGnTZOjsMe7sehifLynZJuqJpo= github.com/cli/browser v1.3.0/go.mod h1:HH8s+fOAxjhQoBUAsKuPCbqUuxZDhQ2/aD+SzsEfBTk= github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 h1:F1EaeKL/ta07PY/k9Os/UFtwERei2/XzGemhpGnBKNg= @@ -249,22 +231,13 @@ github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmf github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cznic/mathutil v0.0.0-20180504122225-ca4c9f2c1369 h1:XNT/Zf5l++1Pyg08/HV04ppB0gKxAqtZQBRYiYrUuYk= github.com/cznic/mathutil v0.0.0-20180504122225-ca4c9f2c1369/go.mod h1:e6NPNENfs9mPDVNRekM7lKScauxd5kXTr1Mfyig6TDM= github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/dhui/dktest v0.4.1/go.mod h1:DdOqcUpL7vgyP4GlF3X3w7HbSlz8cEQzwewPveYEQbA= -github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v24.0.9+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= @@ -281,21 +254,6 @@ github.com/form3tech-oss/jwt-go v3.2.5+incompatible h1:/l4kBbb4/vGSsdtB5nUe8L7B9 github.com/form3tech-oss/jwt-go v3.2.5+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= -github.com/fsouza/fake-gcs-server v1.17.0/go.mod h1:D1rTE4YCyHFNa99oyJJ5HyclvN/0uQR+pM/VdlL83bw= -github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= -github.com/garrettladley/fiberpaginate v1.0.5/go.mod h1:MHVWGQkhtnt2kE8F0wkTF5iUQOyqZlRktfcGgBLRBv0= -github.com/garrettladley/mattress v0.4.0/go.mod h1:OWKIRc9wC3gtD3Ng/nUuNEiR1TJvRYLmn/KZYw9nl5Q= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= -github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= -github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk= -github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= -github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= -github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= -github.com/go-playground/validator/v10 v10.20.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= github.com/fsouza/fake-gcs-server v1.17.0 h1:OeH75kBZcZa3ZE+zz/mFdJ2btt9FgqfjI7gIh9+5fvk= github.com/fsouza/fake-gcs-server v1.17.0/go.mod h1:D1rTE4YCyHFNa99oyJJ5HyclvN/0uQR+pM/VdlL83bw= github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= @@ -304,22 +262,13 @@ github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gG github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= -github.com/gobuffalo/here v0.6.0/go.mod h1:wAG085dHOYqUpf+Ap+WOdrPTp5IYcDAs/x7PLa8Y5fM= -github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/gobuffalo/here v0.6.0 h1:hYrd0a6gDmWxBM4TnrGw8mQg24iSVoIkHEk7FodQcBI= github.com/gobuffalo/here v0.6.0/go.mod h1:wAG085dHOYqUpf+Ap+WOdrPTp5IYcDAs/x7PLa8Y5fM= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/gocql/gocql v0.0.0-20210515062232-b7ef815b4556 h1:N/MD/sr6o61X+iZBAT2qEUF023s4KbA8RWfKzl0L6MQ= github.com/gocql/gocql v0.0.0-20210515062232-b7ef815b4556/go.mod h1:DL0ekTmBSTdlNF25Orwt/JMzqIq3EJ4MVa/J/uK64OY= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= -github.com/gofiber/contrib/otelfiber v1.0.10/go.mod h1:jN6AvS1HolDHTQHFURsV+7jSX96FpXYeKH6nmkq8AIw= -github.com/gofiber/fiber/v2 v2.52.4/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ= -github.com/gofiber/swagger v1.0.0/go.mod h1:QrYNF1Yrc7ggGK6ATsJ6yfH/8Zi5bu9lA7wB8TmCecg= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= -github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/golang-migrate/migrate/v4 v4.17.1/go.mod h1:m8hinFyWBn0SA4QKHuKh175Pm9wjmxj3S2Mia7dbXzM= github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs= github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= @@ -333,12 +282,6 @@ github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-github/v39 v39.2.0/go.mod h1:C1s8C5aCC9L+JXIYpJM5GYytdX52vC1bLvHEF1IhBrE= -github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= -github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/flatbuffers v2.0.8+incompatible h1:ivUb1cGomAB101ZM1T0nOiWz9pSrTMoa9+EiY7igmkM= github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= @@ -361,14 +304,10 @@ github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56 github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/googleapis/google-cloud-go-testing v0.0.0-20210719221736-1c9a4c676720 h1:zC34cGQu69FG7qzJ3WiKW244WfhDC3xxYMeNOX2gtUQ= github.com/googleapis/google-cloud-go-testing v0.0.0-20210719221736-1c9a4c676720/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gopherjs/gopherjs v1.17.2/go.mod h1:pRRIvn/QzFLrKfvEz3qUuEhtE/zLCWfreZ6J5gM2i+k= github.com/gorilla/handlers v1.4.2 h1:0QniY0USkHQ1RGCLfKxeNHK9bkDHGRYGNDFBCS+YARg= github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc= github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= -github.com/h2non/gock v1.2.0/go.mod h1:tNhoxHYW2W42cYkYb1WqzdbYIieALC99kpYr7rH/BQk= -github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= @@ -381,8 +320,6 @@ github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed h1:5upAirOpQc github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= github.com/hashicorp/consul/api v1.25.1 h1:CqrdhYzc8XZuPnhIYZWH45toM0LB9ZeYr/gvpLVI3PE= github.com/hashicorp/consul/api v1.25.1/go.mod h1:iiLVwR/htV7mas/sy0O+XSuEnrdBUUydemjxcUrAt4g= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/consul/sdk v0.14.1/go.mod h1:vFt03juSzocLRFo59NkeQHHmQa6+g7oU0pfzdI1mUhg= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= @@ -390,13 +327,6 @@ github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+ github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= -github.com/huandu/go-assert v1.1.6/go.mod h1:JuIfbmYG9ykwvuxoJ3V8TB5QP+3+ajIA54Y44TmkMxs= -github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= @@ -405,9 +335,11 @@ github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= github.com/hashicorp/serf v0.10.1 h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY= github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= github.com/jackc/pgconn v1.14.3 h1:bVoTr12EGANZz66nZPkMInAV/KHD2TxH9npjXXgiB3w= @@ -416,25 +348,13 @@ github.com/jackc/pgerrcode v0.0.0-20220416144525-469b46aa5efa h1:s+4MhCQ6YrzisK6 github.com/jackc/pgerrcode v0.0.0-20220416144525-469b46aa5efa/go.mod h1:a/s9Lp5W7n/DD0VrVoyJ00FbP2ytTPDVOivvn2bMlds= github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE= github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= -github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= -github.com/jackc/pgproto3/v2 v2.3.3/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgservicefile v0.0.0-20231201235250-de7065d80cb9/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= github.com/jackc/pgproto3/v2 v2.3.3 h1:1HLSx5H+tXR9pW3in3zaztoEwQYRC9SQaYUHjTSUOag= github.com/jackc/pgproto3/v2 v2.3.3/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgtype v1.14.0 h1:y+xUdabmyMkJLyApYuPj38mW+aAIqCe5uuBB51rH3Vw= github.com/jackc/pgtype v1.14.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= github.com/jackc/pgx/v4 v4.18.2 h1:xVpYkNR5pk5bMCZGfClbO962UIqVABcAGt7ha1s/FeU= github.com/jackc/pgx/v4 v4.18.2/go.mod h1:Ey4Oru5tH5sB6tV7hDmfWFahwF15Eb7DNXlRKx2CkVw= -github.com/jackc/pgx/v5 v5.5.5/go.mod h1:ez9gk+OAat140fv9ErkZDYFWmXLfV+++K0uAOiwgm1A= -github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= -github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= -github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= -github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/k0kubun/pp v2.3.0+incompatible h1:EKhKbi34VQDWJtq+zpsKSEhkHHs9w2P8Izbq8IhLVSo= github.com/k0kubun/pp v2.3.0+incompatible/go.mod h1:GWse8YhT0p8pT4ir3ZgBbfZild3tgzSScAn6HmfYukg= github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA= @@ -443,36 +363,21 @@ github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNU github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= -github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/ktrysmt/go-bitbucket v0.6.4/go.mod h1:9u0v3hsd2rqCHRIpbir1oP7F58uo5dq19sBYvuMoyQ4= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/markbates/pkger v0.15.1/go.mod h1:0JoVlrol20BSywW79rN3kdFFsE5xYM+rSCQDXbLhiuI= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= -github.com/mcnijman/go-emailaddress v1.1.1/go.mod h1:5whZrhS8Xp5LxO8zOD35BC+b76kROtsh+dPomeRt/II= -github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= github.com/ktrysmt/go-bitbucket v0.6.4 h1:C8dUGp0qkwncKtAnozHCbbqhptefzEd1I0sfnuy9rYQ= github.com/ktrysmt/go-bitbucket v0.6.4/go.mod h1:9u0v3hsd2rqCHRIpbir1oP7F58uo5dq19sBYvuMoyQ4= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/lyft/protoc-gen-star/v2 v2.0.3/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/markbates/pkger v0.15.1 h1:3MPelV53RnGSW07izx5xGxl4e/sdRD6zqseIk0rMASY= github.com/markbates/pkger v0.15.1/go.mod h1:0JoVlrol20BSywW79rN3kdFFsE5xYM+rSCQDXbLhiuI= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -487,12 +392,10 @@ github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8D github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= github.com/mutecomm/go-sqlcipher/v4 v4.4.0 h1:sV1tWCWGAVlPhNGT95Q+z/txFxuhAYWwHD1afF5bMZg= @@ -508,7 +411,6 @@ github.com/nats-io/nkeys v0.4.6/go.mod h1:4DxZNzenSVd1cYQoAa8948QY3QDjrHfcfVADym github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= -github.com/neo4j/neo4j-go-driver v1.8.1-0.20200803113522-b626aa943eba/go.mod h1:ncO5VaFWh0Nrt+4KT4mOZboaczBZcLuHrG+/sUeP8gI= github.com/neo4j/neo4j-go-driver v1.8.1-0.20200803113522-b626aa943eba h1:fhFP5RliM2HW/8XdcO5QngSfFli9GcRIpMXvypTQt6E= github.com/neo4j/neo4j-go-driver v1.8.1-0.20200803113522-b626aa943eba/go.mod h1:ncO5VaFWh0Nrt+4KT4mOZboaczBZcLuHrG+/sUeP8gI= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= @@ -516,25 +418,12 @@ github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/gomega v1.15.0 h1:WjP/FQ/sk43MRmnEcT+MlDw2TFvkrXlprrPST/IudjU= github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= -github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/pelletier/go-toml/v2 v2.2.0/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= -github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0= github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= +github.com/pelletier/go-toml/v2 v2.2.0/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/pierrec/lz4/v4 v4.1.16 h1:kQPfno+wyx6C5572ABwV+Uo3pDFzQ7yhyGchSyRda0c= github.com/pierrec/lz4/v4 v4.1.16/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/sftp v1.13.6/go.mod h1:tz1ryNURKu77RL+GuCzmoJYxQczL3wLNNpPWagdg4Qk= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/redis/go-redis/v9 v9.5.1/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M= -github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= -github.com/resend/resend-go/v2 v2.6.0/go.mod h1:ihnxc7wPpSgans8RV8d8dIF4hYWVsqMK5KxXAr9LIos= -github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/sftp v1.13.6 h1:JFZT4XbOU7l77xGSpOdW+pwIMqP044IyjXX6FGyEKFo= github.com/pkg/sftp v1.13.6/go.mod h1:tz1ryNURKu77RL+GuCzmoJYxQczL3wLNNpPWagdg4Qk= @@ -549,14 +438,14 @@ github.com/rqlite/gorqlite v0.0.0-20230708021416-2acd02b70b79 h1:V7x0hCAgL8lNGez github.com/rqlite/gorqlite v0.0.0-20230708021416-2acd02b70b79/go.mod h1:xF/KoXmrRyahPfo5L7Szb5cAAUl53dMWBh9cMruGEZg= github.com/rs/cors v1.11.0 h1:0B9GE/r9Bc2UxRMMtymBkHTenPkHDv0CW4Y98GBY+po= github.com/rs/cors v1.11.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sagikazarmark/crypt v0.17.0 h1:ZA/7pXyjkHoK4bW4mIdnCLvL8hd+Nrbiw7Dqk7D4qUk= github.com/sagikazarmark/crypt v0.17.0/go.mod h1:SMtHTvdmsZMuY/bpZoqokSoChIrcJ/epOxZN58PbZDg= github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= +github.com/sahilm/fuzzy v0.1.1 h1:ceu5RHF8DGgoi+/dR5PsECjCDH1BE3Fnmpo7aVXOdRA= github.com/sahilm/fuzzy v0.1.1/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y= -github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= -github.com/sagikazarmark/crypt v0.17.0 h1:ZA/7pXyjkHoK4bW4mIdnCLvL8hd+Nrbiw7Dqk7D4qUk= -github.com/sagikazarmark/crypt v0.17.0/go.mod h1:SMtHTvdmsZMuY/bpZoqokSoChIrcJ/epOxZN58PbZDg= github.com/sahilm/fuzzy v0.1.1 h1:ceu5RHF8DGgoi+/dR5PsECjCDH1BE3Fnmpo7aVXOdRA= github.com/sahilm/fuzzy v0.1.1/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y= github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= @@ -569,8 +458,7 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5I github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.9.2 h1:oxx1eChJGI6Uks2ZC4W1zpLlVgqB8ner4EuQwV4Ik1Y= github.com/sirupsen/logrus v1.9.2/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/smarty/assertions v1.15.0/go.mod h1:yABtdzeQs6l1brC900WlRNwj6ZR55d7B+E8C6HtKdec= -github.com/smartystreets/goconvey v1.8.1/go.mod h1:+/u4qLyY6x1jReYOp7GOM2FSt8aP9CzCZL03bI28W60= +github.com/snowflakedb/gosnowflake v1.6.19 h1:KSHXrQ5o7uso25hNIzi/RObXtnSGkFgie91X82KcvMY= github.com/snowflakedb/gosnowflake v1.6.19/go.mod h1:FM1+PWUdwB9udFDsXdfD58NONC0m+MlOSmQRvimobSM= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= @@ -578,32 +466,19 @@ github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cA github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/swaggo/files/v2 v2.0.0/go.mod h1:24kk2Y9NYEJ5lHuCra6iVwkMjIekMCaFq/0JQj66kyM= -github.com/swaggo/swag v1.16.3/go.mod h1:DImHIuOFXKpMFAQjcC7FG4m3Dg4+QuUgUzJmKjI/gRk= -github.com/tinylib/msgp v1.1.9/go.mod h1:BCXGB54lDD8qUEPmiG0cQQUANC4IUQyB2ItS2UDlO/k= -github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.52.0/go.mod h1:hf5C4QnVMkNXMspnsUlfM3WitlgYflyhHYoKol/szxQ= -github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= -github.com/snowflakedb/gosnowflake v1.6.19 h1:KSHXrQ5o7uso25hNIzi/RObXtnSGkFgie91X82KcvMY= -github.com/snowflakedb/gosnowflake v1.6.19/go.mod h1:FM1+PWUdwB9udFDsXdfD58NONC0m+MlOSmQRvimobSM= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= -github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/swaggo/swag v1.16.2 h1:28Pp+8DkQoV+HLzLx8RGJZXNGKbFqnuvSbAAtoxiY04= github.com/swaggo/swag v1.16.2/go.mod h1:6YzXnDcpr0767iOejs318CwYkCQqyGer6BizOg03f+E= github.com/urfave/cli/v2 v2.3.0 h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M= @@ -640,20 +515,15 @@ go.mongodb.org/mongo-driver v1.7.5 h1:ny3p0reEpgsR2cfA5cjgwFZg3Cv/ofFh/8jbhGtz9V go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib v1.17.0/go.mod h1:gIzjwWFoGazJmtCaDgViqOSJPde2mCWzv60o0bWPcZs= -go.opentelemetry.io/contrib/propagators/b3 v1.17.0/go.mod h1:IkfUfMpKWmynvvE0264trz0sf32NRTZL4nuAN9AbWRc= go.opentelemetry.io/otel v1.26.0/go.mod h1:UmLkJHUAidDval2EICqBMbnAd0/m2vmpf/dAM+fvFs4= go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.26.0/go.mod h1:zVZ8nz+VSggWmnh6tTsJqXQ7rU4xLwRtna1M4x5jq58= go.opentelemetry.io/otel/metric v1.26.0/go.mod h1:SY+rHOI4cEawI9a7N1A4nIg/nTQXe1ccCNWYOJUrpX4= -go.opentelemetry.io/otel/oteltest v1.0.0-RC3/go.mod h1:xpzajI9JBRr7gX63nO6kAmImmYIAtuQblZ36Z+LfCjE= go.opentelemetry.io/otel/sdk v1.26.0/go.mod h1:0p8MXpqLeJ0pzcszQQN4F0S5FVjBLgypeGSngLsmirs= -go.opentelemetry.io/otel/sdk/metric v0.39.0/go.mod h1:piDIRgjcK7u0HCL5pCA4e74qpK/jk3NiUoAHATVAmiI= go.opentelemetry.io/otel/trace v1.26.0/go.mod h1:4iDxvGDQuUkHve82hJJ8UqrwswHYsZuWCBllGV2U2y0= -go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= @@ -681,18 +551,32 @@ golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= +golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= +golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/net v0.0.0-20180911220305-26e67e76b6c3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= +golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= +golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= +golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= +golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= @@ -727,15 +611,22 @@ golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI= @@ -745,13 +636,6 @@ google.golang.org/api v0.153.0 h1:N1AwGhielyKFaUqH07/ZSIQR3uNPcV7NVw0vj+j4iR4= google.golang.org/api v0.153.0/go.mod h1:3qNJX5eOmhiWYc67jRA/3GsDw97UFb5ivv7Y2PrriAY= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY= -google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc= -google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:CgAqfJo+Xmu0GwA0411Ht3OU3OntXwsGmrmjI8ioGXI= google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405/go.mod h1:3WDQMjmJk36UQhjQ89emUzb1mdaHcPeeAh4SCBKznB4= @@ -779,12 +663,6 @@ google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHh gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gorm.io/driver/postgres v1.5.7/go.mod h1:3e019WlBaYI5o5LIdNV+LyxCMNtLOQETBXL2h4chKpA= -gorm.io/gorm v1.25.10/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= lukechampine.com/frand v1.4.2/go.mod h1:4S/TM2ZgrKejMcKMbeLjISpJMO+/eZ1zu3vYX9dtj3s= lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI= lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= From d9e7766ba74ba890c90d867a41621a8fb98cbb73 Mon Sep 17 00:00:00 2001 From: Garrett Ladley <92384606+garrettladley@users.noreply.github.com> Date: Tue, 28 May 2024 14:17:04 -0400 Subject: [PATCH 4/9] =?UTF-8?q?=F0=9F=A7=B9=20chore:=20config=20reorg=20an?= =?UTF-8?q?d=20exported=20vs=20private=20(#933)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/config/auth.go | 10 +++-- backend/config/aws.go | 14 ++++--- backend/config/calendar.go | 11 +++-- backend/config/config.go | 6 ++- backend/config/database.go | 2 +- backend/config/oauth.go | 63 +---------------------------- backend/config/oauth_google.go | 37 +++++++++++++++++ backend/config/oauth_outlook.go | 36 +++++++++++++++++ backend/config/redis.go | 34 ++++++++-------- backend/integrations/expose.go | 2 +- backend/integrations/oauth/oauth.go | 2 +- backend/main.go | 2 +- 12 files changed, 122 insertions(+), 97 deletions(-) create mode 100644 backend/config/oauth_google.go create mode 100644 backend/config/oauth_outlook.go diff --git a/backend/config/auth.go b/backend/config/auth.go index 420eeed1f..e359095c7 100644 --- a/backend/config/auth.go +++ b/backend/config/auth.go @@ -1,6 +1,10 @@ package config -import m "github.com/garrettladley/mattress" +import ( + "fmt" + + m "github.com/garrettladley/mattress" +) type AuthSettings struct { AccessKey *m.Secret[string] @@ -15,12 +19,12 @@ type intermediateAuthSettings struct { func (i *intermediateAuthSettings) into() (*AuthSettings, error) { accessKey, err := m.NewSecret(i.AccessKey) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to create secret from access key: %s", err.Error()) } refreshKey, err := m.NewSecret(i.RefreshKey) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to create secret from refresh key: %s", err.Error()) } return &AuthSettings{ diff --git a/backend/config/aws.go b/backend/config/aws.go index 2f5a88c8e..0f52b2e18 100644 --- a/backend/config/aws.go +++ b/backend/config/aws.go @@ -1,6 +1,10 @@ package config -import m "github.com/garrettladley/mattress" +import ( + "fmt" + + m "github.com/garrettladley/mattress" +) type AWSSettings struct { BucketName *m.Secret[string] @@ -19,22 +23,22 @@ type intermediateAWSSettings struct { func (i *intermediateAWSSettings) into() (*AWSSettings, error) { bucketName, err := m.NewSecret(i.BucketName) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to create secret from bucket name: %s", err.Error()) } id, err := m.NewSecret(i.Id) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to create secret from ID: %s", err.Error()) } secret, err := m.NewSecret(i.Secret) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to create secret from secret: %s", err.Error()) } region, err := m.NewSecret(i.Region) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to create secret from region: %s", err.Error()) } return &AWSSettings{ diff --git a/backend/config/calendar.go b/backend/config/calendar.go index 29f78e9f8..41dfbb004 100644 --- a/backend/config/calendar.go +++ b/backend/config/calendar.go @@ -1,6 +1,9 @@ package config -import "time" +import ( + "fmt" + "time" +) type CalendarSettings struct { MaxTerminationDate time.Time @@ -11,12 +14,12 @@ type intermediateCalendarSettings struct { } func (i *intermediateCalendarSettings) into() (*CalendarSettings, error) { - t, err := time.Parse("01-02-2006", i.MaxTerminationDate) + maxTerminationDate, err := time.Parse("01-02-2006", i.MaxTerminationDate) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to parse max termination date: %s", err.Error()) } return &CalendarSettings{ - MaxTerminationDate: t, + MaxTerminationDate: maxTerminationDate, }, nil } diff --git a/backend/config/config.go b/backend/config/config.go index 282e256ed..3298f0943 100644 --- a/backend/config/config.go +++ b/backend/config/config.go @@ -1,6 +1,8 @@ package config import ( + "fmt" + "github.com/caarlos0/env/v11" "github.com/joho/godotenv" ) @@ -8,12 +10,12 @@ import ( func GetConfiguration(path string) (*Settings, error) { err := godotenv.Load(path) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to load environment variables: %s", err.Error()) } var intermediateSettings intermediateSettings if err := env.Parse(&intermediateSettings); err != nil { - return nil, err + return nil, fmt.Errorf("failed to parse environment variables: %s", err.Error()) } settings, err := intermediateSettings.into() diff --git a/backend/config/database.go b/backend/config/database.go index 81f771c2a..2d0f367ea 100644 --- a/backend/config/database.go +++ b/backend/config/database.go @@ -54,7 +54,7 @@ type intermediateDatabaseSettings struct { func (i *intermediateDatabaseSettings) into() (*DatabaseSettings, error) { password, err := m.NewSecret(i.Password) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to create secret from password: %s", err.Error()) } return &DatabaseSettings{ diff --git a/backend/config/oauth.go b/backend/config/oauth.go index 5f3defff5..ce6032734 100644 --- a/backend/config/oauth.go +++ b/backend/config/oauth.go @@ -1,8 +1,6 @@ package config import ( - "errors" - m "github.com/garrettladley/mattress" ) @@ -20,66 +18,7 @@ type OAuthSettings struct { Prompt string } -type OAuthResources struct { +type OauthProviderSettings struct { GoogleOAuthSettings *OAuthSettings OutlookOAuthSettings *OAuthSettings } - -type GoogleOAuthSettings struct { - ClientId string `env:"GOOGLE_OAUTH_CLIENT_ID"` - ClientSecret string `env:"GOOGLE_OAUTH_CLIENT_SECRET"` -} - -func (i *GoogleOAuthSettings) into() (*OAuthSettings, error) { - secretClientID, err := m.NewSecret(i.ClientId) - if err != nil { - return nil, errors.New("failed to create secret from client ID") - } - - secretClientSecret, err := m.NewSecret(i.ClientSecret) - if err != nil { - return nil, errors.New("failed to create secret from client secret") - } - - return &OAuthSettings{ - BaseURL: "https://accounts.google.com/o/oauth2/v2", - TokenURL: "https://oauth2.googleapis.com", - ClientID: secretClientID, - ClientSecret: secretClientSecret, - Scopes: "https://www.googleapis.com/auth/calendar.events https://www.googleapis.com/auth/calendar.readonly", - ResponseType: "code", - RedirectURI: "http://localhost:3000", - IncludeGrantedScopes: "true", - AccessType: "offline", - Prompt: "consent", - }, nil -} - -type OutlookOAuthSettings struct { - ClientId string `env:"OUTLOOK_OAUTH_CLIENT_ID"` - ClientSecret string `env:"OUTLOOK_OAUTH_CLIENT_SECRET"` -} - -func (i *OutlookOAuthSettings) into() (*OAuthSettings, error) { - secretClientID, err := m.NewSecret(i.ClientId) - if err != nil { - return nil, errors.New("failed to create secret from client ID") - } - - secretClientSecret, err := m.NewSecret(i.ClientSecret) - if err != nil { - return nil, errors.New("failed to create secret from client secret") - } - - return &OAuthSettings{ - BaseURL: "https://login.microsoftonline.com/common/oauth2/v2.0", - TokenURL: "https://login.microsoftonline.com/common/oauth2/v2.0", - ClientID: secretClientID, - ClientSecret: secretClientSecret, - Scopes: "offline_access user.read calendars.readwrite", - ResponseType: "code", - RedirectURI: "http://localhost:3000", - ResponseMode: "query", - Prompt: "consent", - }, nil -} diff --git a/backend/config/oauth_google.go b/backend/config/oauth_google.go new file mode 100644 index 000000000..9e9aa714d --- /dev/null +++ b/backend/config/oauth_google.go @@ -0,0 +1,37 @@ +package config + +import ( + "fmt" + + m "github.com/garrettladley/mattress" +) + +type GoogleOAuthSettings struct { + ClientId string `env:"GOOGLE_OAUTH_CLIENT_ID"` + ClientSecret string `env:"GOOGLE_OAUTH_CLIENT_SECRET"` +} + +func (i *GoogleOAuthSettings) into() (*OAuthSettings, error) { + secretClientID, err := m.NewSecret(i.ClientId) + if err != nil { + return nil, fmt.Errorf("failed to create secret from client ID: %s", err.Error()) + } + + secretClientSecret, err := m.NewSecret(i.ClientSecret) + if err != nil { + return nil, fmt.Errorf("failed to create secret from client secret: %s", err.Error()) + } + + return &OAuthSettings{ + BaseURL: "https://accounts.google.com/o/oauth2/v2", + TokenURL: "https://oauth2.googleapis.com", + ClientID: secretClientID, + ClientSecret: secretClientSecret, + Scopes: "https://www.googleapis.com/auth/calendar.events https://www.googleapis.com/auth/calendar.readonly", + ResponseType: "code", + RedirectURI: "http://localhost:3000", + IncludeGrantedScopes: "true", + AccessType: "offline", + Prompt: "consent", + }, nil +} diff --git a/backend/config/oauth_outlook.go b/backend/config/oauth_outlook.go new file mode 100644 index 000000000..ac8059c83 --- /dev/null +++ b/backend/config/oauth_outlook.go @@ -0,0 +1,36 @@ +package config + +import ( + "fmt" + + m "github.com/garrettladley/mattress" +) + +type OutlookOAuthSettings struct { + ClientId string `env:"OUTLOOK_OAUTH_CLIENT_ID"` + ClientSecret string `env:"OUTLOOK_OAUTH_CLIENT_SECRET"` +} + +func (i *OutlookOAuthSettings) into() (*OAuthSettings, error) { + secretClientID, err := m.NewSecret(i.ClientId) + if err != nil { + return nil, fmt.Errorf("failed to create secret from client ID: %s", err.Error()) + } + + secretClientSecret, err := m.NewSecret(i.ClientSecret) + if err != nil { + return nil, fmt.Errorf("failed to create secret from client secret: %s", err.Error()) + } + + return &OAuthSettings{ + BaseURL: "https://login.microsoftonline.com/common/oauth2/v2.0", + TokenURL: "https://login.microsoftonline.com/common/oauth2/v2.0", + ClientID: secretClientID, + ClientSecret: secretClientSecret, + Scopes: "offline_access user.read calendars.readwrite", + ResponseType: "code", + RedirectURI: "http://localhost:3000", + ResponseMode: "query", + Prompt: "consent", + }, nil +} diff --git a/backend/config/redis.go b/backend/config/redis.go index 44d5f8036..27a122312 100644 --- a/backend/config/redis.go +++ b/backend/config/redis.go @@ -1,7 +1,7 @@ package config import ( - "errors" + "fmt" m "github.com/garrettladley/mattress" ) @@ -15,22 +15,6 @@ type RedisSettings struct { // TLSConfig *TLSConfig } -func (int *intermediateRedisSettings) into() (*RedisSettings, error) { - password, err := m.NewSecret(int.Password) - if err != nil { - return nil, errors.New("failed to create secret from password") - } - - return &RedisSettings{ - Username: int.Username, - Password: password, - Host: int.Host, - Port: int.Port, - DB: int.DB, - // TLSConfig: int.TLSConfig.into(), - }, nil -} - type intermediateRedisSettings struct { Username string `env:"USERNAME"` Password string `env:"PASSWORD"` @@ -39,3 +23,19 @@ type intermediateRedisSettings struct { DB int `env:"DB"` // TLSConfig *intermediateTLSConfig `env:"TLS_CONFIG"` } + +func (i *intermediateRedisSettings) into() (*RedisSettings, error) { + password, err := m.NewSecret(i.Password) + if err != nil { + return nil, fmt.Errorf("failed to create secret from password: %s", err.Error()) + } + + return &RedisSettings{ + Username: i.Username, + Password: password, + Host: i.Host, + Port: i.Port, + DB: i.DB, + // TLSConfig: i.TLSConfig.into(), + }, nil +} diff --git a/backend/integrations/expose.go b/backend/integrations/expose.go index 6e8584150..f7d138f98 100644 --- a/backend/integrations/expose.go +++ b/backend/integrations/expose.go @@ -9,5 +9,5 @@ import ( type Integrations struct { Email email.EmailClientInterface File file.FileClientInterface - OAuth oauth.OAuthResources + OAuth oauth.OauthProviderSettings } diff --git a/backend/integrations/oauth/oauth.go b/backend/integrations/oauth/oauth.go index 14b34339f..7416d6190 100644 --- a/backend/integrations/oauth/oauth.go +++ b/backend/integrations/oauth/oauth.go @@ -12,7 +12,7 @@ type OAuthClient struct { ResourceClient OAuthResourceClientInterface } -type OAuthResources struct { +type OauthProviderSettings struct { Outlook OutlookOAuthClient Google GoogleOAuthClient } diff --git a/backend/main.go b/backend/main.go index a3a32611a..23cddfc9d 100644 --- a/backend/main.go +++ b/backend/main.go @@ -102,7 +102,7 @@ func configureIntegrations(config *config.Settings) integrations.Integrations { OAuthConfig: config.Outlook, } - oauthResources := oauth.OAuthResources{ + oauthResources := oauth.OauthProviderSettings{ Google: googleClient, Outlook: outlookClient, } From 13b4e60a12a333a022404c70f2faf505368d1d97 Mon Sep 17 00:00:00 2001 From: Garrett Ladley <92384606+garrettladley@users.noreply.github.com> Date: Tue, 28 May 2024 17:16:44 -0400 Subject: [PATCH 5/9] =?UTF-8?q?=F0=9F=A7=B9=20chore:=20clean=20up=20config?= =?UTF-8?q?=20params=20to=20only=20pass=20necessary=20settings=20(#935)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/config/settings.go | 22 ++++++++++++++-------- backend/database/db.go | 8 ++++---- backend/main.go | 30 ++++++++++++------------------ backend/tests/api/helpers/app.go | 2 +- backend/tests/api/helpers/db.go | 10 +++++----- 5 files changed, 36 insertions(+), 36 deletions(-) diff --git a/backend/config/settings.go b/backend/config/settings.go index c4856b8ac..39f36753b 100644 --- a/backend/config/settings.go +++ b/backend/config/settings.go @@ -8,11 +8,15 @@ type Settings struct { RedisLimiter RedisSettings SuperUser SuperUserSettings Auth AuthSettings - AWS AWSSettings - Resend ResendSettings Calendar CalendarSettings - Google OAuthSettings - Outlook OAuthSettings + Integrations +} + +type Integrations struct { + GoogleOauth OAuthSettings + OutlookOauth OAuthSettings + AWS AWSSettings + Resend ResendSettings } type intermediateSettings struct { @@ -94,10 +98,12 @@ func (i *intermediateSettings) into() (*Settings, error) { RedisLimiter: *redisLimiter, SuperUser: *superUser, Auth: *auth, - AWS: *aws, - Resend: *resend, Calendar: *calendar, - Google: *google, - Outlook: *outlook, + Integrations: Integrations{ + GoogleOauth: *google, + OutlookOauth: *outlook, + AWS: *aws, + Resend: *resend, + }, }, nil } diff --git a/backend/database/db.go b/backend/database/db.go index c2652aefa..928dd1b0b 100644 --- a/backend/database/db.go +++ b/backend/database/db.go @@ -17,7 +17,7 @@ func ConfigureDB(settings config.Settings) (*gorm.DB, error) { return nil, err } - if err := CreateSuperUserIfNotExists(settings, db); err != nil { + if err := CreateSuperUserIfNotExists(settings.SuperUser, db); err != nil { return nil, err } @@ -64,7 +64,7 @@ func ConnPooling(db *gorm.DB) error { return nil } -func CreateSuperUserIfNotExists(settings config.Settings, db *gorm.DB) error { +func CreateSuperUserIfNotExists(settings config.SuperUserSettings, db *gorm.DB) error { var superUser models.User if err := db.Where("role = ?", models.Super).First(&superUser).Error; err != nil { @@ -80,7 +80,7 @@ func CreateSuperUserIfNotExists(settings config.Settings, db *gorm.DB) error { return nil } -func createSuperUser(settings config.Settings, db *gorm.DB) error { +func createSuperUser(settings config.SuperUserSettings, db *gorm.DB) error { tx := db.Begin() defer func() { if r := recover(); r != nil { @@ -92,7 +92,7 @@ func createSuperUser(settings config.Settings, db *gorm.DB) error { return err } - superUser, err := SuperUser(settings.SuperUser) + superUser, err := SuperUser(settings) if err != nil { tx.Rollback() return err diff --git a/backend/main.go b/backend/main.go index 23cddfc9d..aab1fa2bc 100644 --- a/backend/main.go +++ b/backend/main.go @@ -64,7 +64,7 @@ func main() { stores := store.ConfigureRedis(*config) - integrations := configureIntegrations(config) + integrations := configureIntegrations(&config.Integrations) tp := telemetry.InitTracer() @@ -76,7 +76,7 @@ func main() { } }() - app := server.Init(db, stores, integrations, *config) + app := server.Init(db, stores, *integrations, *config) err = app.Listen(fmt.Sprintf("%s:%d", config.Application.Host, config.Application.Port)) if err != nil { @@ -94,23 +94,17 @@ func checkServerRunning(host string, port uint16) error { return nil } -func configureIntegrations(config *config.Settings) integrations.Integrations { - googleClient := oauth.GoogleOAuthClient{ - OAuthConfig: config.Google, - } - outlookClient := oauth.OutlookOAuthClient{ - OAuthConfig: config.Outlook, - } - - oauthResources := oauth.OauthProviderSettings{ - Google: googleClient, - Outlook: outlookClient, - } - - integrations := integrations.Integrations{ +func configureIntegrations(config *config.Integrations) *integrations.Integrations { + return &integrations.Integrations{ File: file.NewAWSProvider(config.AWS), Email: email.NewResendClient(config.Resend, true), - OAuth: oauthResources, + OAuth: oauth.OauthProviderSettings{ + Google: oauth.GoogleOAuthClient{ + OAuthConfig: config.GoogleOauth, + }, + Outlook: oauth.OutlookOAuthClient{ + OAuthConfig: config.OutlookOauth, + }, + }, } - return integrations } diff --git a/backend/tests/api/helpers/app.go b/backend/tests/api/helpers/app.go index 661f473d5..cea11931f 100644 --- a/backend/tests/api/helpers/app.go +++ b/backend/tests/api/helpers/app.go @@ -33,7 +33,7 @@ func spawnApp() (*TestApp, error) { configuration.Database.DatabaseName = generateRandomDBName() - connectionWithDB, err := configureDatabase(*configuration) + connectionWithDB, err := configureDatabase(configuration.Database, configuration.SuperUser) if err != nil { return nil, err } diff --git a/backend/tests/api/helpers/db.go b/backend/tests/api/helpers/db.go index fbda2250a..434c15846 100644 --- a/backend/tests/api/helpers/db.go +++ b/backend/tests/api/helpers/db.go @@ -29,15 +29,15 @@ func RootConn(dbSettings config.DatabaseSettings) { }) } -func configureDatabase(settings config.Settings) (*gorm.DB, error) { - RootConn(settings.Database) +func configureDatabase(databaseSettings config.DatabaseSettings, superUserSettings config.SuperUserSettings) (*gorm.DB, error) { + RootConn(databaseSettings) - err := rootConn.Exec(fmt.Sprintf("CREATE DATABASE %s", settings.Database.DatabaseName)).Error + err := rootConn.Exec(fmt.Sprintf("CREATE DATABASE %s", databaseSettings.DatabaseName)).Error if err != nil { return nil, err } - dbWithDB, err := database.EstablishConn(settings.Database.WithDb()) + dbWithDB, err := database.EstablishConn(databaseSettings.WithDb()) if err != nil { return nil, err } @@ -64,7 +64,7 @@ func configureDatabase(settings config.Settings) (*gorm.DB, error) { return nil, err } - err = database.CreateSuperUserIfNotExists(settings, dbWithDB) + err = database.CreateSuperUserIfNotExists(superUserSettings, dbWithDB) if err != nil { return nil, err } From f0962dffac3765c4ab75fe3ba3cf7c39c1ef503d Mon Sep 17 00:00:00 2001 From: Garrett Ladley <92384606+garrettladley@users.noreply.github.com> Date: Tue, 28 May 2024 18:37:05 -0400 Subject: [PATCH 6/9] =?UTF-8?q?=F0=9F=A7=B9=20chore:=20more=20configurable?= =?UTF-8?q?=20oauth=20settings=20(#936)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/config/auth.go | 8 +++--- backend/config/aws.go | 20 ++++++------- backend/config/calendar.go | 4 +-- backend/config/database.go | 24 ++++++++-------- backend/config/oauth_google.go | 13 +++++---- backend/config/oauth_outlook.go | 13 +++++---- backend/config/redis.go | 20 ++++++------- backend/config/resend.go | 4 +-- backend/config/settings.go | 48 +++++++++++++++---------------- backend/config/sudo.go | 4 +-- backend/integrations/file/file.go | 2 +- config/.env.template | 15 +++++----- 12 files changed, 89 insertions(+), 86 deletions(-) diff --git a/backend/config/auth.go b/backend/config/auth.go index e359095c7..0acf2019a 100644 --- a/backend/config/auth.go +++ b/backend/config/auth.go @@ -12,17 +12,17 @@ type AuthSettings struct { } type intermediateAuthSettings struct { - AccessKey string `env:"ACCESS_KEY"` - RefreshKey string `env:"REFRESH_KEY"` + accessKey string `env:"ACCESS_KEY"` + refreshKey string `env:"REFRESH_KEY"` } func (i *intermediateAuthSettings) into() (*AuthSettings, error) { - accessKey, err := m.NewSecret(i.AccessKey) + accessKey, err := m.NewSecret(i.accessKey) if err != nil { return nil, fmt.Errorf("failed to create secret from access key: %s", err.Error()) } - refreshKey, err := m.NewSecret(i.RefreshKey) + refreshKey, err := m.NewSecret(i.refreshKey) if err != nil { return nil, fmt.Errorf("failed to create secret from refresh key: %s", err.Error()) } diff --git a/backend/config/aws.go b/backend/config/aws.go index 0f52b2e18..c6effb90b 100644 --- a/backend/config/aws.go +++ b/backend/config/aws.go @@ -8,42 +8,42 @@ import ( type AWSSettings struct { BucketName *m.Secret[string] - Id *m.Secret[string] + ID *m.Secret[string] Secret *m.Secret[string] Region *m.Secret[string] } type intermediateAWSSettings struct { - BucketName string `env:"BUCKET_NAME"` - Id string `env:"ID"` - Secret string `env:"SECRET"` - Region string `env:"REGION"` + bucketName string `env:"BUCKET_NAME"` + id string `env:"ID"` + secret string `env:"SECRET"` + region string `env:"REGION"` } func (i *intermediateAWSSettings) into() (*AWSSettings, error) { - bucketName, err := m.NewSecret(i.BucketName) + bucketName, err := m.NewSecret(i.bucketName) if err != nil { return nil, fmt.Errorf("failed to create secret from bucket name: %s", err.Error()) } - id, err := m.NewSecret(i.Id) + id, err := m.NewSecret(i.id) if err != nil { return nil, fmt.Errorf("failed to create secret from ID: %s", err.Error()) } - secret, err := m.NewSecret(i.Secret) + secret, err := m.NewSecret(i.secret) if err != nil { return nil, fmt.Errorf("failed to create secret from secret: %s", err.Error()) } - region, err := m.NewSecret(i.Region) + region, err := m.NewSecret(i.region) if err != nil { return nil, fmt.Errorf("failed to create secret from region: %s", err.Error()) } return &AWSSettings{ BucketName: bucketName, - Id: id, + ID: id, Secret: secret, Region: region, }, nil diff --git a/backend/config/calendar.go b/backend/config/calendar.go index 41dfbb004..1489aff70 100644 --- a/backend/config/calendar.go +++ b/backend/config/calendar.go @@ -10,11 +10,11 @@ type CalendarSettings struct { } type intermediateCalendarSettings struct { - MaxTerminationDate string `env:"MAX_TERMINATION_DATE"` + maxTerminationDate string `env:"MAX_TERMINATION_DATE"` } func (i *intermediateCalendarSettings) into() (*CalendarSettings, error) { - maxTerminationDate, err := time.Parse("01-02-2006", i.MaxTerminationDate) + maxTerminationDate, err := time.Parse("01-02-2006", i.maxTerminationDate) if err != nil { return nil, fmt.Errorf("failed to parse max termination date: %s", err.Error()) } diff --git a/backend/config/database.go b/backend/config/database.go index 2d0f367ea..b507a5e6a 100644 --- a/backend/config/database.go +++ b/backend/config/database.go @@ -43,26 +43,26 @@ func (s *DatabaseSettings) PostgresConn() string { } type intermediateDatabaseSettings struct { - Username string `env:"USERNAME"` - Password string `env:"PASSWORD"` - Port uint `env:"PORT"` - Host string `env:"HOST"` - DatabaseName string `env:"NAME"` - RequireSSL bool `env:"REQUIRE_SSL"` + username string `env:"USERNAME"` + password string `env:"PASSWORD"` + port uint `env:"PORT"` + host string `env:"HOST"` + databaseName string `env:"NAME"` + requireSSL bool `env:"REQUIRE_SSL"` } func (i *intermediateDatabaseSettings) into() (*DatabaseSettings, error) { - password, err := m.NewSecret(i.Password) + password, err := m.NewSecret(i.password) if err != nil { return nil, fmt.Errorf("failed to create secret from password: %s", err.Error()) } return &DatabaseSettings{ - Username: i.Username, + Username: i.username, Password: password, - Port: i.Port, - Host: i.Host, - DatabaseName: i.DatabaseName, - RequireSSL: i.RequireSSL, + Port: i.port, + Host: i.host, + DatabaseName: i.databaseName, + RequireSSL: i.requireSSL, }, nil } diff --git a/backend/config/oauth_google.go b/backend/config/oauth_google.go index 9e9aa714d..a26101ab0 100644 --- a/backend/config/oauth_google.go +++ b/backend/config/oauth_google.go @@ -6,13 +6,14 @@ import ( m "github.com/garrettladley/mattress" ) -type GoogleOAuthSettings struct { - ClientId string `env:"GOOGLE_OAUTH_CLIENT_ID"` - ClientSecret string `env:"GOOGLE_OAUTH_CLIENT_SECRET"` +type intermediateGoogleOAuthSettings struct { + ClientID string `env:"CLIENT_ID"` + ClientSecret string `env:"CLIENT_SECRET"` + RedirectURI string `env:"REDIRECT_URI"` } -func (i *GoogleOAuthSettings) into() (*OAuthSettings, error) { - secretClientID, err := m.NewSecret(i.ClientId) +func (i *intermediateGoogleOAuthSettings) into() (*OAuthSettings, error) { + secretClientID, err := m.NewSecret(i.ClientID) if err != nil { return nil, fmt.Errorf("failed to create secret from client ID: %s", err.Error()) } @@ -29,7 +30,7 @@ func (i *GoogleOAuthSettings) into() (*OAuthSettings, error) { ClientSecret: secretClientSecret, Scopes: "https://www.googleapis.com/auth/calendar.events https://www.googleapis.com/auth/calendar.readonly", ResponseType: "code", - RedirectURI: "http://localhost:3000", + RedirectURI: i.RedirectURI, IncludeGrantedScopes: "true", AccessType: "offline", Prompt: "consent", diff --git a/backend/config/oauth_outlook.go b/backend/config/oauth_outlook.go index ac8059c83..ce0cb11cc 100644 --- a/backend/config/oauth_outlook.go +++ b/backend/config/oauth_outlook.go @@ -6,13 +6,14 @@ import ( m "github.com/garrettladley/mattress" ) -type OutlookOAuthSettings struct { - ClientId string `env:"OUTLOOK_OAUTH_CLIENT_ID"` - ClientSecret string `env:"OUTLOOK_OAUTH_CLIENT_SECRET"` +type intermdeiateOutlookOAuthSettings struct { + ClientID string `env:"CLIENT_ID"` + ClientSecret string `env:"CLIENT_SECRET"` + RedirectURI string `env:"REDIRECT_URI"` } -func (i *OutlookOAuthSettings) into() (*OAuthSettings, error) { - secretClientID, err := m.NewSecret(i.ClientId) +func (i *intermdeiateOutlookOAuthSettings) into() (*OAuthSettings, error) { + secretClientID, err := m.NewSecret(i.ClientID) if err != nil { return nil, fmt.Errorf("failed to create secret from client ID: %s", err.Error()) } @@ -29,7 +30,7 @@ func (i *OutlookOAuthSettings) into() (*OAuthSettings, error) { ClientSecret: secretClientSecret, Scopes: "offline_access user.read calendars.readwrite", ResponseType: "code", - RedirectURI: "http://localhost:3000", + RedirectURI: i.RedirectURI, ResponseMode: "query", Prompt: "consent", }, nil diff --git a/backend/config/redis.go b/backend/config/redis.go index 27a122312..926d72a17 100644 --- a/backend/config/redis.go +++ b/backend/config/redis.go @@ -16,26 +16,26 @@ type RedisSettings struct { } type intermediateRedisSettings struct { - Username string `env:"USERNAME"` - Password string `env:"PASSWORD"` - Host string `env:"HOST"` - Port uint `env:"PORT"` - DB int `env:"DB"` + username string `env:"USERNAME"` + password string `env:"PASSWORD"` + host string `env:"HOST"` + port uint `env:"PORT"` + db int `env:"DB"` // TLSConfig *intermediateTLSConfig `env:"TLS_CONFIG"` } func (i *intermediateRedisSettings) into() (*RedisSettings, error) { - password, err := m.NewSecret(i.Password) + password, err := m.NewSecret(i.password) if err != nil { return nil, fmt.Errorf("failed to create secret from password: %s", err.Error()) } return &RedisSettings{ - Username: i.Username, + Username: i.username, Password: password, - Host: i.Host, - Port: i.Port, - DB: i.DB, + Host: i.host, + Port: i.port, + DB: i.db, // TLSConfig: i.TLSConfig.into(), }, nil } diff --git a/backend/config/resend.go b/backend/config/resend.go index 73c724d39..f2292d3ed 100644 --- a/backend/config/resend.go +++ b/backend/config/resend.go @@ -11,11 +11,11 @@ type ResendSettings struct { } type intermediateResendSettings struct { - APIKey string `env:"API_KEY"` + apiKey string `env:"API_KEY"` } func (i *intermediateResendSettings) into() (*ResendSettings, error) { - apiKey, err := m.NewSecret(i.APIKey) + apiKey, err := m.NewSecret(i.apiKey) if err != nil { return nil, fmt.Errorf("failed to create secret from API key: %s", err.Error()) } diff --git a/backend/config/settings.go b/backend/config/settings.go index 39f36753b..68c777317 100644 --- a/backend/config/settings.go +++ b/backend/config/settings.go @@ -20,78 +20,78 @@ type Integrations struct { } type intermediateSettings struct { - Application ApplicationSettings `envPrefix:"SAC_APPLICATION_"` - Database intermediateDatabaseSettings `envPrefix:"SAC_DB_"` - RedisActiveTokens intermediateRedisSettings `envPrefix:"SAC_REDIS_ACTIVE_TOKENS_"` - RedisBlacklist intermediateRedisSettings `envPrefix:"SAC_REDIS_BLACKLIST_"` - RedisLimiter intermediateRedisSettings `envPrefix:"SAC_REDIS_LIMITER_"` - SuperUser intermediateSuperUserSettings `envPrefix:"SAC_SUDO_"` - Auth intermediateAuthSettings `envPrefix:"SAC_AUTH_"` - AWS intermediateAWSSettings `envPrefix:"SAC_AWS_"` - Resend intermediateResendSettings `envPrefix:"SAC_RESEND_"` - Calendar intermediateCalendarSettings `envPrefix:"SAC_CALENDAR_"` - GoogleSettings GoogleOAuthSettings `envPrefix:"SAC_GOOGLE_OAUTH"` - OutlookSettings OutlookOAuthSettings `envPrefix:"SAC_OUTLOOK_OAUTH"` + application ApplicationSettings `envPrefix:"SAC_APPLICATION_"` + database intermediateDatabaseSettings `envPrefix:"SAC_DB_"` + redisActiveTokens intermediateRedisSettings `envPrefix:"SAC_REDIS_ACTIVE_TOKENS_"` + redisBlacklist intermediateRedisSettings `envPrefix:"SAC_REDIS_BLACKLIST_"` + redisLimiter intermediateRedisSettings `envPrefix:"SAC_REDIS_LIMITER_"` + superUser intermediateSuperUserSettings `envPrefix:"SAC_SUDO_"` + auth intermediateAuthSettings `envPrefix:"SAC_AUTH_"` + aws intermediateAWSSettings `envPrefix:"SAC_AWS_"` + resend intermediateResendSettings `envPrefix:"SAC_RESEND_"` + calendar intermediateCalendarSettings `envPrefix:"SAC_CALENDAR_"` + googleSettings intermediateGoogleOAuthSettings `envPrefix:"SAC_GOOGLE_OAUTH"` + outlookSettings intermdeiateOutlookOAuthSettings `envPrefix:"SAC_OUTLOOK_OAUTH"` } func (i *intermediateSettings) into() (*Settings, error) { - database, err := i.Database.into() + database, err := i.database.into() if err != nil { return nil, err } - redisActiveTokens, err := i.RedisActiveTokens.into() + redisActiveTokens, err := i.redisActiveTokens.into() if err != nil { return nil, err } - redisBlacklist, err := i.RedisBlacklist.into() + redisBlacklist, err := i.redisBlacklist.into() if err != nil { return nil, err } - redisLimiter, err := i.RedisLimiter.into() + redisLimiter, err := i.redisLimiter.into() if err != nil { return nil, err } - superUser, err := i.SuperUser.into() + superUser, err := i.superUser.into() if err != nil { return nil, err } - auth, err := i.Auth.into() + auth, err := i.auth.into() if err != nil { return nil, err } - aws, err := i.AWS.into() + aws, err := i.aws.into() if err != nil { return nil, err } - resend, err := i.Resend.into() + resend, err := i.resend.into() if err != nil { return nil, err } - calendar, err := i.Calendar.into() + calendar, err := i.calendar.into() if err != nil { return nil, err } - google, err := i.GoogleSettings.into() + google, err := i.googleSettings.into() if err != nil { return nil, err } - outlook, err := i.OutlookSettings.into() + outlook, err := i.outlookSettings.into() if err != nil { return nil, err } return &Settings{ - Application: i.Application, + Application: i.application, Database: *database, RedisActiveTokens: *redisActiveTokens, RedisBlacklist: *redisBlacklist, diff --git a/backend/config/sudo.go b/backend/config/sudo.go index 823f09cde..d1e4d21ea 100644 --- a/backend/config/sudo.go +++ b/backend/config/sudo.go @@ -10,11 +10,11 @@ type SuperUserSettings struct { Password *m.Secret[string] } type intermediateSuperUserSettings struct { - Password string `env:"PASSWORD"` + password string `env:"PASSWORD"` } func (i *intermediateSuperUserSettings) into() (*SuperUserSettings, error) { - password, err := m.NewSecret(i.Password) + password, err := m.NewSecret(i.password) if err != nil { return nil, fmt.Errorf("failed to create secret from password: %s", err.Error()) } diff --git a/backend/integrations/file/file.go b/backend/integrations/file/file.go index f25147727..c5c587267 100644 --- a/backend/integrations/file/file.go +++ b/backend/integrations/file/file.go @@ -45,7 +45,7 @@ type AWSClient struct { func NewAWSProvider(settings config.AWSSettings) FileClientInterface { sess, err := session.NewSession(&aws.Config{ Region: aws.String(settings.Region.Expose()), - Credentials: credentials.NewStaticCredentials(settings.Id.Expose(), settings.Secret.Expose(), ""), + Credentials: credentials.NewStaticCredentials(settings.ID.Expose(), settings.Secret.Expose(), ""), }) if err != nil { return nil diff --git a/config/.env.template b/config/.env.template index 3d49343e2..dda0d2df9 100644 --- a/config/.env.template +++ b/config/.env.template @@ -47,10 +47,11 @@ SAC_RESEND_API_KEY="SAC_RESEND_API_KEY" SAC_CALENDAR_MAX_TERMINATION_DATE="12-31-2024" -GOOGLE_OAUTH_CLIENT_ID=GOOGLE_OAUTH_CLIENT_ID -GOOGLE_OAUTH_CLIENT_SECRET=GOOGLE_OAUTH_CLIENT_SECRET -GOOGLE_API_KEY=GOOGLE_API_KEY - -OUTLOOK_OAUTH_CLIENT_ID=test -OUTLOOK_OAUTH_CLIENT_SECRET=test - +SAC_GOOGLE_OAUTH_CLIENT_ID=GOOGLE_OAUTH_CLIENT_ID +SAC_GOOGLE_OAUTH_CLIENT_SECRET=GOOGLE_OAUTH_CLIENT_SECRET +SAC_GOOGLE_API_KEY=GOOGLE_API_KEY +SAC_GOOGLE_OAUTH_REDIRECT_URI="http://127.0.0.1:3000" + +SAC_OUTLOOK_OAUTH_CLIENT_ID=test +SAC_OUTLOOK_OAUTH_CLIENT_SECRET=test +SAC_OUTLOOK_OAUTH_REDIRECT_URI="http://127.0.0.1:3000 From b308e6cf538a786b6f589eab01e49f5357c41d58 Mon Sep 17 00:00:00 2001 From: Garrett Ladley <92384606+garrettladley@users.noreply.github.com> Date: Tue, 28 May 2024 18:56:07 -0400 Subject: [PATCH 7/9] =?UTF-8?q?=F0=9F=A7=B9=20chore:=20make=20search=20url?= =?UTF-8?q?=20configurable=20(#937)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/config/search.go | 5 +++++ backend/config/settings.go | 3 +++ backend/constants/search.go | 9 +++++---- backend/main.go | 3 +++ backend/search/base/transactions.go | 6 +++--- backend/search/seed.go | 8 ++++---- config/.env.template | 2 ++ 7 files changed, 25 insertions(+), 11 deletions(-) create mode 100644 backend/config/search.go diff --git a/backend/config/search.go b/backend/config/search.go new file mode 100644 index 000000000..27f40eaf1 --- /dev/null +++ b/backend/config/search.go @@ -0,0 +1,5 @@ +package config + +type SearchSettings struct { + URI string `env:"URI"` +} diff --git a/backend/config/settings.go b/backend/config/settings.go index 68c777317..36c62f77c 100644 --- a/backend/config/settings.go +++ b/backend/config/settings.go @@ -17,6 +17,7 @@ type Integrations struct { OutlookOauth OAuthSettings AWS AWSSettings Resend ResendSettings + Search SearchSettings } type intermediateSettings struct { @@ -32,6 +33,7 @@ type intermediateSettings struct { calendar intermediateCalendarSettings `envPrefix:"SAC_CALENDAR_"` googleSettings intermediateGoogleOAuthSettings `envPrefix:"SAC_GOOGLE_OAUTH"` outlookSettings intermdeiateOutlookOAuthSettings `envPrefix:"SAC_OUTLOOK_OAUTH"` + search SearchSettings `env:"SAC_SEARCH"` } func (i *intermediateSettings) into() (*Settings, error) { @@ -104,6 +106,7 @@ func (i *intermediateSettings) into() (*Settings, error) { OutlookOauth: *outlook, AWS: *aws, Resend: *resend, + Search: i.search, }, }, nil } diff --git a/backend/constants/search.go b/backend/constants/search.go index 9065bc2b0..69bdd8289 100644 --- a/backend/constants/search.go +++ b/backend/constants/search.go @@ -1,8 +1,9 @@ package constants const ( - SEARCH_URL = "http://127.0.0.1:9200" - CLUBS_INDEX = "clubs" - EVENTS_INDEX = "events" - SEARCH_QUERY_DEFAULT_MAX_MEMBERS = 16384 + CLUBS_INDEX string = "clubs" + EVENTS_INDEX string = "events" + SEARCH_QUERY_DEFAULT_MAX_MEMBERS int = 16384 ) + +var SEARCH_URI string diff --git a/backend/main.go b/backend/main.go index aab1fa2bc..8adbe970e 100644 --- a/backend/main.go +++ b/backend/main.go @@ -9,6 +9,7 @@ import ( "path/filepath" "github.com/GenerateNU/sac/backend/config" + "github.com/GenerateNU/sac/backend/constants" "github.com/GenerateNU/sac/backend/database" "github.com/GenerateNU/sac/backend/database/store" _ "github.com/GenerateNU/sac/backend/docs" @@ -32,6 +33,8 @@ func main() { utilities.Exit("Error getting configuration: %s", err.Error()) } + constants.SEARCH_URI = config.Search.URI + err = checkServerRunning(config.Application.Host, config.Application.Port) if err == nil { utilities.Exit("A server is already running on %s:%d.\n", config.Application.Host, config.Application.Port) diff --git a/backend/search/base/transactions.go b/backend/search/base/transactions.go index 48803686d..9ea68146a 100644 --- a/backend/search/base/transactions.go +++ b/backend/search/base/transactions.go @@ -21,7 +21,7 @@ func doSearchGetRequest[T, V any](url string, requestBody T) (*V, error) { return nil, err } - resp, err := utilities.Request(http.MethodGet, fmt.Sprintf("%s%s", constants.SEARCH_URL, url), payload, utilities.JSON()) + resp, err := utilities.Request(http.MethodGet, fmt.Sprintf("%s%s", constants.SEARCH_URI, url), payload, utilities.JSON()) if err != nil { return nil, err } @@ -80,7 +80,7 @@ func Upsert[T types.Searchable](db *gorm.DB, index string, uuid string, model ty return err } - resp, err := utilities.Request(http.MethodPost, fmt.Sprintf("%s/%s/_update/%s", constants.SEARCH_URL, index, uuid), payload, utilities.JSON()) + resp, err := utilities.Request(http.MethodPost, fmt.Sprintf("%s/%s/_update/%s", constants.SEARCH_URI, index, uuid), payload, utilities.JSON()) if err != nil { return err } @@ -90,7 +90,7 @@ func Upsert[T types.Searchable](db *gorm.DB, index string, uuid string, model ty } func Delete(db *gorm.DB, index string, uuid string) error { - resp, err := utilities.Request(http.MethodDelete, fmt.Sprintf("%s/%s/_doc/%s", constants.SEARCH_URL, index, uuid), nil, utilities.JSON()) + resp, err := utilities.Request(http.MethodDelete, fmt.Sprintf("%s/%s/_doc/%s", constants.SEARCH_URI, index, uuid), nil, utilities.JSON()) if err != nil { return err } diff --git a/backend/search/seed.go b/backend/search/seed.go index 641653941..2408373f0 100644 --- a/backend/search/seed.go +++ b/backend/search/seed.go @@ -22,7 +22,7 @@ func SeedClubs(db *gorm.DB) error { stdout := os.Stdout stdout.WriteString("Deleting existing club index...\n") - req, err := http.NewRequest("DELETE", fmt.Sprintf("%s/clubs", constants.SEARCH_URL), nil) + req, err := http.NewRequest("DELETE", fmt.Sprintf("%s/clubs", constants.SEARCH_URI), nil) if err != nil { return err } @@ -58,7 +58,7 @@ func SeedClubs(db *gorm.DB) error { requestBodyBuilder.WriteString(fmt.Sprintf("%s\n%s\n", indexJson, clubJson)) } - resp, err := utilities.Request(http.MethodPost, fmt.Sprintf("%s/_bulk", constants.SEARCH_URL), []byte(requestBodyBuilder.String()), utilities.JSON()) + resp, err := utilities.Request(http.MethodPost, fmt.Sprintf("%s/_bulk", constants.SEARCH_URI), []byte(requestBodyBuilder.String()), utilities.JSON()) if err != nil { stdout.WriteString(fmt.Sprintf("Error making _bulk request for club seeding: %s\n", err.Error())) } @@ -78,7 +78,7 @@ func SeedEvents(db *gorm.DB) error { stdout := os.Stdout stdout.WriteString("Deleting existing event index...\n") - resp, err := utilities.Request(http.MethodDelete, fmt.Sprintf("%s/events", constants.SEARCH_URL), nil, utilities.JSON()) + resp, err := utilities.Request(http.MethodDelete, fmt.Sprintf("%s/events", constants.SEARCH_URI), nil, utilities.JSON()) if err != nil { return err } @@ -109,7 +109,7 @@ func SeedEvents(db *gorm.DB) error { requestBodyBuilder.WriteString(fmt.Sprintf("%s\n%s\n", indexJson, eventJson)) } - resp, err = utilities.Request(http.MethodPost, fmt.Sprintf("%s/_bulk", constants.SEARCH_URL), []byte(requestBodyBuilder.String()), utilities.JSON()) + resp, err = utilities.Request(http.MethodPost, fmt.Sprintf("%s/_bulk", constants.SEARCH_URI), []byte(requestBodyBuilder.String()), utilities.JSON()) if err != nil { stdout.WriteString(fmt.Sprintf("Error making _bulk request for event seeding: %s\n", err.Error())) } diff --git a/config/.env.template b/config/.env.template index dda0d2df9..7cf187614 100644 --- a/config/.env.template +++ b/config/.env.template @@ -55,3 +55,5 @@ SAC_GOOGLE_OAUTH_REDIRECT_URI="http://127.0.0.1:3000" SAC_OUTLOOK_OAUTH_CLIENT_ID=test SAC_OUTLOOK_OAUTH_CLIENT_SECRET=test SAC_OUTLOOK_OAUTH_REDIRECT_URI="http://127.0.0.1:3000 + +SAC_SEARCH_URI=""http://127.0.0.1:9200" \ No newline at end of file From ca88501a7a8b70a15ccf90dafe8ca1ba87e9f1b7 Mon Sep 17 00:00:00 2001 From: Alder Whiteford Date: Tue, 28 May 2024 23:49:21 -0400 Subject: [PATCH 8/9] feat: mobile button comp (#924) Co-authored-by: Alder Whiteford Co-authored-by: Alder Whiteford --- frontend/mobile/app/(app)/(tabs)/discover.tsx | 2 +- frontend/mobile/app/(app)/(tabs)/index.tsx | 2 +- frontend/mobile/app/(auth)/index.tsx | 5 + frontend/mobile/app/(design-system)/Colors.ts | 12 -- .../mobile/app/(design-system)/Tag/Tag.tsx | 37 ----- .../app/(design-system)/Tag/TagVariants.ts | 42 ------ .../{ => components/Box}/Box.tsx | 4 +- .../components/Button/Button.tsx | 142 ++++++++++++++++++ .../(design-system)/components/Icon/Icon.tsx | 34 +++++ .../(design-system)/components/Tag/Tag.tsx | 51 +++++++ .../{ => components}/Text/Text.tsx | 2 +- .../{ => components}/Text/TextVariants.ts | 0 frontend/mobile/app/(design-system)/index.ts | 10 +- .../app/(design-system)/shared/border.ts | 4 + .../app/(design-system)/shared/colors.ts | 73 +++++++++ .../{Spacing.ts => shared/spacing.ts} | 0 .../app/(design-system)/shared/types.ts | 3 + frontend/mobile/app/(design-system)/theme.ts | 20 ++- frontend/mobile/package.json | 11 +- frontend/mobile/yarn.lock | 141 ++++++++++++++++- 20 files changed, 484 insertions(+), 111 deletions(-) delete mode 100644 frontend/mobile/app/(design-system)/Colors.ts delete mode 100644 frontend/mobile/app/(design-system)/Tag/Tag.tsx delete mode 100644 frontend/mobile/app/(design-system)/Tag/TagVariants.ts rename frontend/mobile/app/(design-system)/{ => components/Box}/Box.tsx (75%) create mode 100644 frontend/mobile/app/(design-system)/components/Button/Button.tsx create mode 100644 frontend/mobile/app/(design-system)/components/Icon/Icon.tsx create mode 100644 frontend/mobile/app/(design-system)/components/Tag/Tag.tsx rename frontend/mobile/app/(design-system)/{ => components}/Text/Text.tsx (70%) rename frontend/mobile/app/(design-system)/{ => components}/Text/TextVariants.ts (100%) create mode 100644 frontend/mobile/app/(design-system)/shared/border.ts create mode 100644 frontend/mobile/app/(design-system)/shared/colors.ts rename frontend/mobile/app/(design-system)/{Spacing.ts => shared/spacing.ts} (100%) create mode 100644 frontend/mobile/app/(design-system)/shared/types.ts diff --git a/frontend/mobile/app/(app)/(tabs)/discover.tsx b/frontend/mobile/app/(app)/(tabs)/discover.tsx index e153b6fdf..7098ccf72 100644 --- a/frontend/mobile/app/(app)/(tabs)/discover.tsx +++ b/frontend/mobile/app/(app)/(tabs)/discover.tsx @@ -3,7 +3,7 @@ import { Box, Tag } from '@/app/(design-system)'; const DiscoverPage = () => { return ( - Discover + Tag ); }; diff --git a/frontend/mobile/app/(app)/(tabs)/index.tsx b/frontend/mobile/app/(app)/(tabs)/index.tsx index c1e40d376..2b4bd5ac9 100644 --- a/frontend/mobile/app/(app)/(tabs)/index.tsx +++ b/frontend/mobile/app/(app)/(tabs)/index.tsx @@ -3,7 +3,7 @@ import { StyleSheet, Text, View } from 'react-native'; const HomePage = () => { return ( - Home + Home Page ); }; diff --git a/frontend/mobile/app/(auth)/index.tsx b/frontend/mobile/app/(auth)/index.tsx index d1e4b89e7..09c4d6459 100644 --- a/frontend/mobile/app/(auth)/index.tsx +++ b/frontend/mobile/app/(auth)/index.tsx @@ -1,10 +1,15 @@ import React from 'react'; import { Text, View } from 'react-native'; +import { Button } from '../(design-system)/components/Button/Button'; + const Welcome = () => { return ( Welcome + ); }; diff --git a/frontend/mobile/app/(design-system)/Colors.ts b/frontend/mobile/app/(design-system)/Colors.ts deleted file mode 100644 index 9cd099f22..000000000 --- a/frontend/mobile/app/(design-system)/Colors.ts +++ /dev/null @@ -1,12 +0,0 @@ -// TODO: We will have to change these -export const Colors = { - darkBlue: '#0C3354', - darkRed: '#C8102E', - green: '#14AC3F', - blue: '#2663FF', - aqua: '#35B8E2', - purple: '#9226FF', - red: '#EC2215', - orange: '#FF7426', - yellow: '#FFB626' -}; diff --git a/frontend/mobile/app/(design-system)/Tag/Tag.tsx b/frontend/mobile/app/(design-system)/Tag/Tag.tsx deleted file mode 100644 index 37e92a8f6..000000000 --- a/frontend/mobile/app/(design-system)/Tag/Tag.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import React from 'react'; - -import { - BoxProps, - VariantProps, - createBox, - createRestyleComponent, - createVariant -} from '@shopify/restyle'; - -import { Text } from '../Text/Text'; -import { Theme } from '../theme'; - -const Box = createBox(); - -const tagVariant = createVariant({ - themeKey: 'tagVariants' -}); - -type TagProps = VariantProps & - BoxProps & { - children?: React.ReactNode; - }; - -const TagBase = createRestyleComponent([tagVariant], Box); - -export const Tag: React.FC = ({ variant, children, ...rest }) => { - return ( - - {typeof children === 'string' ? ( - {children} - ) : ( - children - )} - - ); -}; diff --git a/frontend/mobile/app/(design-system)/Tag/TagVariants.ts b/frontend/mobile/app/(design-system)/Tag/TagVariants.ts deleted file mode 100644 index 90871a9e6..000000000 --- a/frontend/mobile/app/(design-system)/Tag/TagVariants.ts +++ /dev/null @@ -1,42 +0,0 @@ -const TagColorVariants = { - darkBlue: { - backgroundColor: 'darkBlue' - }, - darkRed: { - backgroundColor: 'darkRed' - }, - green: { - backgroundColor: 'green' - }, - blue: { - backgroundColor: 'blue' - }, - aqua: { - backgroundColor: 'aqua' - }, - purple: { - backgroundColor: 'purple' - }, - red: { - backgroundColor: 'red' - }, - orange: { - backgroundColor: 'orange' - }, - yellow: { - backgroundColor: 'yellow' - } -} as const; - -export const TagVariants = { - defaults: { - flex: '1', - alignItems: 'center', - justifyContent: 'center', - paddingHorizontal: 'l', - paddingVertical: 'xs', - backgroundColor: 'aqua', - borderRadius: 105 - }, - ...TagColorVariants -}; diff --git a/frontend/mobile/app/(design-system)/Box.tsx b/frontend/mobile/app/(design-system)/components/Box/Box.tsx similarity index 75% rename from frontend/mobile/app/(design-system)/Box.tsx rename to frontend/mobile/app/(design-system)/components/Box/Box.tsx index 91e823ae8..ab8e5abb2 100644 --- a/frontend/mobile/app/(design-system)/Box.tsx +++ b/frontend/mobile/app/(design-system)/components/Box/Box.tsx @@ -1,9 +1,9 @@ import React, { PropsWithChildren } from 'react'; -import { ViewProps } from 'react-native-svg/lib/typescript/fabric/utils'; +import { ViewProps } from 'react-native'; import { BoxProps, createBox } from '@shopify/restyle'; -import { Theme } from './theme'; +import { Theme } from '../../theme'; type Props = ViewProps & PropsWithChildren & BoxProps; diff --git a/frontend/mobile/app/(design-system)/components/Button/Button.tsx b/frontend/mobile/app/(design-system)/components/Button/Button.tsx new file mode 100644 index 000000000..b02ab0e23 --- /dev/null +++ b/frontend/mobile/app/(design-system)/components/Button/Button.tsx @@ -0,0 +1,142 @@ +import React from 'react'; +import { GestureResponderEvent, TouchableOpacity } from 'react-native'; + +import { IconDefinition } from '@fortawesome/fontawesome-svg-core'; +import { BoxProps, createBox } from '@shopify/restyle'; + +import { Text } from '@/app/(design-system)/components/Text/Text'; +import { + SACColors, + defaultColor, + textColorVariants +} from '@/app/(design-system)/shared/colors'; +import { Theme, createStyles } from '@/app/(design-system)/theme'; + +import { ComponentSizes } from '../../shared/types'; +import { Icon } from '../Icon/Icon'; + +interface BaseButtonProps { + onPress?: (event: GestureResponderEvent) => void; + disabled?: boolean; + children?: React.ReactNode; + color?: SACColors; +} + +interface StandardButtonProps { + variant: 'standardButton'; + size?: ComponentSizes; +} + +interface IconButtonProps { + variant: 'iconButton'; + icon: IconDefinition; + iconColor?: SACColors; + iconPosition?: 'left' | 'right'; + justify?: 'center' | 'space-between' | 'flex-end' | 'flex-start'; + size?: ComponentSizes; +} + +type VariantButtonProps = StandardButtonProps | IconButtonProps; +type ButtonProps = BaseButtonProps & VariantButtonProps & BoxProps; + +const BaseButton = createBox(TouchableOpacity); + +const StandardButton: React.FC< + BaseButtonProps & StandardButtonProps & BoxProps +> = ({ + children, + onPress, + disabled = false, + color = defaultColor, + size = 'full', + ...rest +}) => { + return ( + + {children} + + ); +}; + +const IconButton: React.FC< + BaseButtonProps & IconButtonProps & BoxProps +> = ({ + children, + onPress, + disabled = false, + color, + icon, + iconColor = 'white', + iconPosition = 'left', + justify = 'center', + size = 'full', + ...rest +}) => { + const buttonIcon = ; + + return ( + + {iconPosition === 'left' && buttonIcon} + {children} + {iconPosition === 'right' && buttonIcon} + + ); +}; + +export const Button: React.FC = (props) => { + if (props.variant === 'standardButton') { + return ; + } + if (props.variant === 'iconButton') { + return ; + } + return null; +}; + +const styles = createStyles({ + standardButton: { + alignItems: 'center', + justifyContent: 'center', + paddingHorizontal: 'l', + paddingVertical: 'm', + borderRadius: 'base' + }, + iconButton: { + alignItems: 'center', + justifyContent: 'center', + paddingHorizontal: 'l', + paddingVertical: 'm', + borderRadius: 'base', + flexDirection: 'row', + gap: 's' + } +}); + +const buttonSizeStyles = createStyles({ + small: { + minWidth: 80, + paddingVertical: 'xs', + paddingHorizontal: 'm' + }, + medium: { + minWidth: 115 + }, + full: { + minWidth: '100%' + } +}); diff --git a/frontend/mobile/app/(design-system)/components/Icon/Icon.tsx b/frontend/mobile/app/(design-system)/components/Icon/Icon.tsx new file mode 100644 index 000000000..8a43abbaa --- /dev/null +++ b/frontend/mobile/app/(design-system)/components/Icon/Icon.tsx @@ -0,0 +1,34 @@ +import { IconDefinition } from '@fortawesome/fontawesome-svg-core'; +import { FontAwesomeIcon } from '@fortawesome/react-native-fontawesome'; + +import { SACColors } from '../../shared/colors'; +import { ComponentSizes } from '../../shared/types'; +import { createStyles } from '../../theme'; + +type IconProps = { + icon: IconDefinition; + size?: ComponentSizes; + color?: SACColors; +}; + +export const Icon: React.FC = ({ icon, size = 'medium', color }) => { + return ( + + ); +}; + +const styles = createStyles({ + small: { + fontSize: 16 + }, + medium: { + fontSize: 24 + }, + full: { + fontSize: 24 + } +}); diff --git a/frontend/mobile/app/(design-system)/components/Tag/Tag.tsx b/frontend/mobile/app/(design-system)/components/Tag/Tag.tsx new file mode 100644 index 000000000..38fcb11f7 --- /dev/null +++ b/frontend/mobile/app/(design-system)/components/Tag/Tag.tsx @@ -0,0 +1,51 @@ +import React from 'react'; + +import { faXmark } from '@fortawesome/free-solid-svg-icons'; + +import { SACColors, defaultColor } from '../../shared/colors'; +import { Button } from '../Button/Button'; + +type TagProps = { + children: React.ReactNode; + onPress?: () => void; + color?: SACColors; + state?: 'selected' | 'unselected' | 'remove'; +}; + +export const Tag: React.FC = ({ + children, + color = defaultColor, + state = 'selected', + onPress +}) => { + if (state === 'selected' || state === 'unselected') { + return ( + + ); + } + if (state === 'remove') { + return ( + + ); + } + return null; +}; diff --git a/frontend/mobile/app/(design-system)/Text/Text.tsx b/frontend/mobile/app/(design-system)/components/Text/Text.tsx similarity index 70% rename from frontend/mobile/app/(design-system)/Text/Text.tsx rename to frontend/mobile/app/(design-system)/components/Text/Text.tsx index 3e056f4fd..a9c294c57 100644 --- a/frontend/mobile/app/(design-system)/Text/Text.tsx +++ b/frontend/mobile/app/(design-system)/components/Text/Text.tsx @@ -1,5 +1,5 @@ import { createText } from '@shopify/restyle'; -import { Theme } from '../theme'; +import { Theme } from '../../theme'; export const Text = createText(); diff --git a/frontend/mobile/app/(design-system)/Text/TextVariants.ts b/frontend/mobile/app/(design-system)/components/Text/TextVariants.ts similarity index 100% rename from frontend/mobile/app/(design-system)/Text/TextVariants.ts rename to frontend/mobile/app/(design-system)/components/Text/TextVariants.ts diff --git a/frontend/mobile/app/(design-system)/index.ts b/frontend/mobile/app/(design-system)/index.ts index 9d45c37d0..8d659a21a 100644 --- a/frontend/mobile/app/(design-system)/index.ts +++ b/frontend/mobile/app/(design-system)/index.ts @@ -1,6 +1,6 @@ -export * from './Text/Text'; -export * from './Box'; +export * from './components/Text/Text'; +export * from './components/Box/Box'; export * from './theme'; -export * from './Colors'; -export * from './Spacing'; -export * from './Tag/Tag'; +export * from './shared/colors'; +export * from './shared/spacing'; +export * from './components/Tag/Tag'; diff --git a/frontend/mobile/app/(design-system)/shared/border.ts b/frontend/mobile/app/(design-system)/shared/border.ts new file mode 100644 index 000000000..03b6f6b89 --- /dev/null +++ b/frontend/mobile/app/(design-system)/shared/border.ts @@ -0,0 +1,4 @@ +export const Border = { + base: 8, + full: 999 +}; diff --git a/frontend/mobile/app/(design-system)/shared/colors.ts b/frontend/mobile/app/(design-system)/shared/colors.ts new file mode 100644 index 000000000..e7e5c8cc0 --- /dev/null +++ b/frontend/mobile/app/(design-system)/shared/colors.ts @@ -0,0 +1,73 @@ +// TODO: We will have to change these +export const Colors = { + darkBlue: '#0C3354', + darkRed: '#C8102E', + green: '#14AC3F', + blue: '#2663FF', + aqua: '#35B8E2', + purple: '#9226FF', + red: '#EC2215', + orange: '#FF7426', + yellow: '#FFB626', + white: '#FFFFFF', + black: '#000000', + disabled: '#BDBDBD' +}; + +export type SACColors = keyof typeof Colors; + +export const defaultColor: keyof typeof Colors = 'black'; + +export const BackgroundColorVariants = { + darkBlue: { + backgroundColor: 'darkBlue' + }, + darkRed: { + backgroundColor: 'darkRed' + }, + green: { + backgroundColor: 'green' + }, + blue: { + backgroundColor: 'blue' + }, + aqua: { + backgroundColor: 'aqua' + }, + purple: { + backgroundColor: 'purple' + }, + red: { + backgroundColor: 'red' + }, + orange: { + backgroundColor: 'orange' + }, + yellow: { + backgroundColor: 'yellow' + }, + white: { + backgroundColor: 'white' + }, + black: { + backgroundColor: 'black' + }, + disabled: { + backgroundColor: 'disabled' + } +} as const; + +export const textColorVariants = { + darkBlue: 'white', + darkRed: 'white', + green: 'white', + blue: 'white', + aqua: 'white', + purple: 'white', + red: 'white', + orange: 'white', + yellow: 'white', + white: 'black', + black: 'white', + disabled: 'white' +} as const; diff --git a/frontend/mobile/app/(design-system)/Spacing.ts b/frontend/mobile/app/(design-system)/shared/spacing.ts similarity index 100% rename from frontend/mobile/app/(design-system)/Spacing.ts rename to frontend/mobile/app/(design-system)/shared/spacing.ts diff --git a/frontend/mobile/app/(design-system)/shared/types.ts b/frontend/mobile/app/(design-system)/shared/types.ts new file mode 100644 index 000000000..f665b58f1 --- /dev/null +++ b/frontend/mobile/app/(design-system)/shared/types.ts @@ -0,0 +1,3 @@ +type ComponentSizes = 'small' | 'medium' | 'full'; + +export { ComponentSizes }; diff --git a/frontend/mobile/app/(design-system)/theme.ts b/frontend/mobile/app/(design-system)/theme.ts index 2a3828ce1..33d54b5e4 100644 --- a/frontend/mobile/app/(design-system)/theme.ts +++ b/frontend/mobile/app/(design-system)/theme.ts @@ -1,15 +1,21 @@ -import { createTheme } from '@shopify/restyle'; +import { AllProps, createTheme } from '@shopify/restyle'; -import { Colors } from './Colors'; -import { Spacing } from './Spacing'; -import { TagVariants } from './Tag/TagVariants'; -import { TextVariants } from './Text/TextVariants'; +import { TextVariants } from './components/Text/TextVariants'; +import { Border } from './shared/border'; +import { Colors } from './shared/colors'; +import { Spacing } from './shared/spacing'; export const theme = createTheme({ colors: Colors, spacing: Spacing, - textVariants: TextVariants, - tagVariants: TagVariants + borderRadii: Border, + textVariants: TextVariants }); +export const createStyles = ( + styles: Record> +): Record> => { + return styles; +}; + export type Theme = typeof theme; diff --git a/frontend/mobile/package.json b/frontend/mobile/package.json index bbc2ed47f..5b563694b 100644 --- a/frontend/mobile/package.json +++ b/frontend/mobile/package.json @@ -15,12 +15,20 @@ "preset": "jest-expo" }, "dependencies": { + "@expo/metro-runtime": "~3.2.1", "@expo/vector-icons": "^14.0.2", + "@fortawesome/fontawesome-svg-core": "^6.5.2", + "@fortawesome/free-brands-svg-icons": "^6.5.2", + "@fortawesome/free-regular-svg-icons": "^6.5.2", + "@fortawesome/free-solid-svg-icons": "^6.5.2", + "@fortawesome/react-fontawesome": "^0.2.2", + "@fortawesome/react-native-fontawesome": "^0.3.2", "@generatesac/lib": "^0.0.1", "@react-navigation/native": "^6.0.2", "@reduxjs/toolkit": "^2.2.5", "@shopify/restyle": "^2.4.4", "expo": "~51.0.2", + "expo-dev-client": "~4.0.14", "expo-font": "~12.0.5", "expo-linking": "~6.3.1", "expo-router": "~3.5.14", @@ -33,9 +41,10 @@ "react-dom": "18.2.0", "react-native": "0.74.1", "react-native-gesture-handler": "^2.16.2", - "react-native-reanimated": "~3.11.0", + "react-native-reanimated": "^3.11.0", "react-native-safe-area-context": "4.10.1", "react-native-screens": "3.31.1", + "react-native-svg": "^15.3.0", "react-native-web": "~0.19.10", "react-redux": "^9.1.2" }, diff --git a/frontend/mobile/yarn.lock b/frontend/mobile/yarn.lock index 090acaf77..129d3eb9f 100644 --- a/frontend/mobile/yarn.lock +++ b/frontend/mobile/yarn.lock @@ -1226,7 +1226,7 @@ postcss "~8.4.32" resolve-from "^5.0.0" -"@expo/metro-runtime@3.2.1": +"@expo/metro-runtime@3.2.1", "@expo/metro-runtime@~3.2.1": version "3.2.1" resolved "https://registry.yarnpkg.com/@expo/metro-runtime/-/metro-runtime-3.2.1.tgz#bbab2ca9d0c8d256172eb4688123af6be67c7674" integrity sha512-L7xNo5SmK+rcuXDm/+VBBImpA7FZsVB+m/rNr3fNl5or+1+yrZe99ViF7LZ8DOoVqAqcb4aCAXvGrP2JNYo1/Q== @@ -1371,6 +1371,54 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.2.tgz#d8bae93ac8b815b2bd7a98078cf91e2724ef11e5" integrity sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw== +"@fortawesome/fontawesome-common-types@6.5.2": + version "6.5.2" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.2.tgz#eaf2f5699f73cef198454ebc0c414e3688898179" + integrity sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw== + +"@fortawesome/fontawesome-svg-core@^6.5.2": + version "6.5.2" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.2.tgz#4b42de71e196039b0d5ccf88559b8044e3296c21" + integrity sha512-5CdaCBGl8Rh9ohNdxeeTMxIj8oc3KNBgIeLMvJosBMdslK/UnEB8rzyDRrbKdL1kDweqBPo4GT9wvnakHWucZw== + dependencies: + "@fortawesome/fontawesome-common-types" "6.5.2" + +"@fortawesome/free-brands-svg-icons@^6.5.2": + version "6.5.2" + resolved "https://registry.yarnpkg.com/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.5.2.tgz#bfca0cebd2c4713dc93244e1fa8b384f1f023587" + integrity sha512-zi5FNYdmKLnEc0jc0uuHH17kz/hfYTg4Uei0wMGzcoCL/4d3WM3u1VMc0iGGa31HuhV5i7ZK8ZlTCQrHqRHSGQ== + dependencies: + "@fortawesome/fontawesome-common-types" "6.5.2" + +"@fortawesome/free-regular-svg-icons@^6.5.2": + version "6.5.2" + resolved "https://registry.yarnpkg.com/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.5.2.tgz#e8e04b4368d49920abdf1bacc63c67c870635222" + integrity sha512-iabw/f5f8Uy2nTRtJ13XZTS1O5+t+anvlamJ3zJGLEVE2pKsAWhPv2lq01uQlfgCX7VaveT3EVs515cCN9jRbw== + dependencies: + "@fortawesome/fontawesome-common-types" "6.5.2" + +"@fortawesome/free-solid-svg-icons@^6.5.2": + version "6.5.2" + resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.2.tgz#9b40b077b27400a5e9fcbf2d15b986c7be69e9ca" + integrity sha512-QWFZYXFE7O1Gr1dTIp+D6UcFUF0qElOnZptpi7PBUMylJh+vFmIedVe1Ir6RM1t2tEQLLSV1k7bR4o92M+uqlw== + dependencies: + "@fortawesome/fontawesome-common-types" "6.5.2" + +"@fortawesome/react-fontawesome@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.2.tgz#68b058f9132b46c8599875f6a636dad231af78d4" + integrity sha512-EnkrprPNqI6SXJl//m29hpaNzOp1bruISWaOiRtkMi/xSvHJlzc2j2JAYS7egxt/EbjSNV/k6Xy0AQI6vB2+1g== + dependencies: + prop-types "^15.8.1" + +"@fortawesome/react-native-fontawesome@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@fortawesome/react-native-fontawesome/-/react-native-fontawesome-0.3.2.tgz#cb822733a334b35f44a2650532b6cb50772d904e" + integrity sha512-CiWfJWSZHRg12VXlaeFnaa5yJVPOrjsSFEvF6ntz3cnjg4oN3cvauL+JATacMCl0v9xzib32qC1WZAvvGkfB4w== + dependencies: + humps "^2.0.1" + prop-types "^15.7.2" + "@gar/promisify@^1.0.1": version "1.1.3" resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" @@ -2989,6 +3037,16 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" +ajv@8.11.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -3983,6 +4041,14 @@ css-select@^5.1.0: domutils "^3.0.1" nth-check "^2.0.1" +css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + css-tree@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" @@ -4831,6 +4897,41 @@ expo-constants@~16.0.0: dependencies: "@expo/config" "~9.0.0-beta.0" +expo-dev-client@~4.0.14: + version "4.0.14" + resolved "https://registry.yarnpkg.com/expo-dev-client/-/expo-dev-client-4.0.14.tgz#73d2f8b6f173d01f07af3e01cf8d5acdc6e05c01" + integrity sha512-s5/FZZdgvoxBGA35QgNet61Dc1jh+8u375uaYkH9pUvfKFXURd9PDDAWvtAnOo+QYg9WwgiHPo7dKeCdN6pOPA== + dependencies: + expo-dev-launcher "4.0.15" + expo-dev-menu "5.0.14" + expo-dev-menu-interface "1.8.3" + expo-manifests "~0.14.0" + expo-updates-interface "~0.16.2" + +expo-dev-launcher@4.0.15: + version "4.0.15" + resolved "https://registry.yarnpkg.com/expo-dev-launcher/-/expo-dev-launcher-4.0.15.tgz#cd36f10b7e534e5caa176a5718381ccfa73b0b8c" + integrity sha512-avl4NTwFwalZjojFAXvINPgxAlcAxfdwy9PSsAq5KAkl9Vv+Vr8O2gI3nfrPwtqAA0iOIES/EKN0YFCiQuuvvg== + dependencies: + ajv "8.11.0" + expo-dev-menu "5.0.14" + expo-manifests "~0.14.0" + resolve-from "^5.0.0" + semver "^7.6.0" + +expo-dev-menu-interface@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/expo-dev-menu-interface/-/expo-dev-menu-interface-1.8.3.tgz#8c1262e29e0124fc5932a129c95b36de56656b20" + integrity sha512-QM0LRozeFT5Ek0N7XpV93M+HMdEKRLEOXn0aW5M3uoUlnqC1+PLtF3HMy3k3hMKTTE/kJ1y1Z7akH07T0lunCQ== + +expo-dev-menu@5.0.14: + version "5.0.14" + resolved "https://registry.yarnpkg.com/expo-dev-menu/-/expo-dev-menu-5.0.14.tgz#7d54fc51b42217588cb9c5f2049bcf857d6e0b3d" + integrity sha512-zPXBMCyjptn4Aw7D2Z8FEqndED33g1ryChN0nyTA1zHzckDNwnGuLdTWTsNFrqmFqyqjRJgG5xFVJmnsDO8WyQ== + dependencies: + expo-dev-menu-interface "1.8.3" + semver "^7.5.4" + expo-file-system@~17.0.1: version "17.0.1" resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-17.0.1.tgz#b9f8af8c1c06ec71d96fd7a0d2567fa9e1c88f15" @@ -4843,6 +4944,11 @@ expo-font@~12.0.4, expo-font@~12.0.5: dependencies: fontfaceobserver "^2.1.0" +expo-json-utils@~0.13.0: + version "0.13.1" + resolved "https://registry.yarnpkg.com/expo-json-utils/-/expo-json-utils-0.13.1.tgz#e49b697198e11c573d346f08ab91c467095934a9" + integrity sha512-mlfaSArGVb+oJmUcR22jEONlgPp0wj4iNIHfQ2je9Q8WTOqMc0Ws9tUciz3JdJnhffdHqo/k8fpvf0IRmN5HPA== + expo-keep-awake@~13.0.1: version "13.0.1" resolved "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-13.0.1.tgz#6c0a0d1fe388fe5a63e2089ade66798eba23f089" @@ -4856,6 +4962,14 @@ expo-linking@~6.3.1: expo-constants "~16.0.0" invariant "^2.2.4" +expo-manifests@~0.14.0: + version "0.14.3" + resolved "https://registry.yarnpkg.com/expo-manifests/-/expo-manifests-0.14.3.tgz#17854c45c8c9ced4a07031ae0838c38ac3115fbc" + integrity sha512-L3b5/qocBPiQjbW0cpOHfnqdKZbTJS7sA3mgeDJT+mWga/xYsdpma1EfNmsuvrOzjLGjStr1k1fceM9Bl49aqQ== + dependencies: + "@expo/config" "~9.0.0" + expo-json-utils "~0.13.0" + expo-modules-autolinking@1.11.1: version "1.11.1" resolved "https://registry.yarnpkg.com/expo-modules-autolinking/-/expo-modules-autolinking-1.11.1.tgz#4a867f727d9dfde07de8dde14b333a3cbf82ce3c" @@ -4914,6 +5028,11 @@ expo-system-ui@~3.0.4: "@react-native/normalize-colors" "~0.74.83" debug "^4.3.2" +expo-updates-interface@~0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/expo-updates-interface/-/expo-updates-interface-0.16.2.tgz#ad1ac2ca8ee5a8cc84052ea3c18a11da64da569b" + integrity sha512-929XBU70q5ELxkKADj1xL0UIm3HvhYhNAOZv5DSk7rrKvLo7QDdPyl+JVnwZm9LrkNbH4wuE2rLoKu1KMgZ+9A== + expo-web-browser@~13.0.3: version "13.0.3" resolved "https://registry.yarnpkg.com/expo-web-browser/-/expo-web-browser-13.0.3.tgz#dceb05dbc187b498ca937b02adf385b0232a4e92" @@ -5759,6 +5878,11 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +humps@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/humps/-/humps-2.0.1.tgz#dd02ea6081bd0568dc5d073184463957ba9ef9aa" + integrity sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g== + hyphenate-style-name@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" @@ -7328,6 +7452,11 @@ mdast-util-to-string@^3.0.0, mdast-util-to-string@^3.1.0: dependencies: "@types/mdast" "^3.0.0" +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + mdn-data@2.0.28: version "2.0.28" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" @@ -8929,7 +9058,7 @@ react-native-helmet-async@2.0.4: react-fast-compare "^3.2.2" shallowequal "^1.1.0" -react-native-reanimated@~3.11.0: +react-native-reanimated@^3.11.0: version "3.11.0" resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-3.11.0.tgz#d4265d4e0232623f5958ed60e1686ca884fc3452" integrity sha512-BNw/XDgUfs8UhfY1X6IniU8kWpnotWGyt8qmQviaHisTi5lvwnaOdXQKfN1KGONx6ekdFRHRP5EFwLi0UajwKA== @@ -8966,6 +9095,14 @@ react-native-svg-transformer@^1.4.0: "@svgr/plugin-svgo" "^8.1.0" path-dirname "^1.0.2" +react-native-svg@^15.3.0: + version "15.3.0" + resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-15.3.0.tgz#e24b833fe330714c99f1dd894bb0da52ad859a4c" + integrity sha512-mBHu/fdlzUbpGX8SZFxgbKvK/sgqLfDLP8uh8G7Us+zJgdjO8OSEeqHQs+kPRdQmdLJQiqPJX2WXgCl7ToTWqw== + dependencies: + css-select "^5.1.0" + css-tree "^1.1.3" + react-native-web@~0.19.10: version "0.19.11" resolved "https://registry.yarnpkg.com/react-native-web/-/react-native-web-0.19.11.tgz#1b96ac3cea9af4e1280fd5fa3b606b471f66edc3" From c6daec3383449766768fe7d0c36ad5768b863a38 Mon Sep 17 00:00:00 2001 From: Alder Whiteford Date: Wed, 29 May 2024 00:14:10 -0400 Subject: [PATCH 9/9] feat: mobile textbox comp (#926) Co-authored-by: Alder Whiteford Co-authored-by: Alder Whiteford --- frontend/mobile/app/(app)/(tabs)/index.tsx | 2 +- .../assets/{ => fonts}/DMSans-Bold.ttf | Bin .../assets/{ => fonts}/DMSans-Medium.ttf | Bin .../assets/{ => fonts}/DMSans-Regular.ttf | Bin .../app/(design-system)/assets/svg/Error.svg | 5 ++ .../components/Button/Button.tsx | 4 +- .../components/Text/TextVariants.ts | 13 +-- .../components/Textbox/Textbox.tsx | 80 ++++++++++++++++++ .../app/(design-system)/shared/colors.ts | 4 +- 9 files changed, 94 insertions(+), 14 deletions(-) rename frontend/mobile/app/(design-system)/assets/{ => fonts}/DMSans-Bold.ttf (100%) rename frontend/mobile/app/(design-system)/assets/{ => fonts}/DMSans-Medium.ttf (100%) rename frontend/mobile/app/(design-system)/assets/{ => fonts}/DMSans-Regular.ttf (100%) create mode 100644 frontend/mobile/app/(design-system)/assets/svg/Error.svg create mode 100644 frontend/mobile/app/(design-system)/components/Textbox/Textbox.tsx diff --git a/frontend/mobile/app/(app)/(tabs)/index.tsx b/frontend/mobile/app/(app)/(tabs)/index.tsx index 2b4bd5ac9..1f411909c 100644 --- a/frontend/mobile/app/(app)/(tabs)/index.tsx +++ b/frontend/mobile/app/(app)/(tabs)/index.tsx @@ -3,7 +3,7 @@ import { StyleSheet, Text, View } from 'react-native'; const HomePage = () => { return ( - Home Page + Hello ); }; diff --git a/frontend/mobile/app/(design-system)/assets/DMSans-Bold.ttf b/frontend/mobile/app/(design-system)/assets/fonts/DMSans-Bold.ttf similarity index 100% rename from frontend/mobile/app/(design-system)/assets/DMSans-Bold.ttf rename to frontend/mobile/app/(design-system)/assets/fonts/DMSans-Bold.ttf diff --git a/frontend/mobile/app/(design-system)/assets/DMSans-Medium.ttf b/frontend/mobile/app/(design-system)/assets/fonts/DMSans-Medium.ttf similarity index 100% rename from frontend/mobile/app/(design-system)/assets/DMSans-Medium.ttf rename to frontend/mobile/app/(design-system)/assets/fonts/DMSans-Medium.ttf diff --git a/frontend/mobile/app/(design-system)/assets/DMSans-Regular.ttf b/frontend/mobile/app/(design-system)/assets/fonts/DMSans-Regular.ttf similarity index 100% rename from frontend/mobile/app/(design-system)/assets/DMSans-Regular.ttf rename to frontend/mobile/app/(design-system)/assets/fonts/DMSans-Regular.ttf diff --git a/frontend/mobile/app/(design-system)/assets/svg/Error.svg b/frontend/mobile/app/(design-system)/assets/svg/Error.svg new file mode 100644 index 000000000..ab90d8876 --- /dev/null +++ b/frontend/mobile/app/(design-system)/assets/svg/Error.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/frontend/mobile/app/(design-system)/components/Button/Button.tsx b/frontend/mobile/app/(design-system)/components/Button/Button.tsx index b02ab0e23..08db025e9 100644 --- a/frontend/mobile/app/(design-system)/components/Button/Button.tsx +++ b/frontend/mobile/app/(design-system)/components/Button/Button.tsx @@ -53,7 +53,7 @@ const StandardButton: React.FC< }) => { return ( void; + value?: string; + maxLength?: number; + secureTextEntry?: boolean; + children?: React.ReactNode; +} & BoxProps; + +const BaseTextInput = createBox(TextInput); + +export const TextBox: React.FC = ({ + title, + placeholder, + helperText = ' ', + error, + autoFocus = false, + readOnly = false, + inputMode = 'text', + onChangeText, + value, + maxLength, + secureTextEntry = false +}) => { + return ( + + + {title} + + + + {error && } + + {error ?? helperText} + + + + ); +}; + +const styles = createStyles({ + textInput: { + borderWidth: 1, + borderRadius: 'base', + backgroundColor: 'white', + padding: 'm', + marginBottom: 'xs', + marginTop: 'xs', + minWidth: '100%', + ...TextVariants['body-1'] + } +}); diff --git a/frontend/mobile/app/(design-system)/shared/colors.ts b/frontend/mobile/app/(design-system)/shared/colors.ts index e7e5c8cc0..a3d041dbd 100644 --- a/frontend/mobile/app/(design-system)/shared/colors.ts +++ b/frontend/mobile/app/(design-system)/shared/colors.ts @@ -11,7 +11,7 @@ export const Colors = { yellow: '#FFB626', white: '#FFFFFF', black: '#000000', - disabled: '#BDBDBD' + gray: '#C3C9D0' }; export type SACColors = keyof typeof Colors; @@ -69,5 +69,5 @@ export const textColorVariants = { yellow: 'white', white: 'black', black: 'white', - disabled: 'white' + gray: 'white' } as const;