canopas_software

joined 1 month ago
 

Simplify group expense management with Splito, the ultimate open-source solution to track, split, and settle shared costs seamlessly.

Why Choose Splito?

Splito makes managing group expenses with friends, family, or colleagues effortless:

  • Group Trips
  • Shared Household Bills
  • Event Planning

Features You'll Love:

  • Create and manage groups for expense tracking.
  • Split costs fairly and settle payments effortlessly.
  • View transaction history and recover deleted data.
  • Receive reminders for unpaid balances.

Download Now & Start Splitting Fairly! https://apps.apple.com/in/app/splito-split-enjoy-together/id6477442217

Exciting Upcoming Features 🌟

  • Multi-currency support and group wallets.
  • Spending charts, group reports, and public polls.
  • Comments on expenses to add notes to transactions.

We’d love to hear your thoughts to help us make it even better!

Explore the Project! 👇

https://github.com/canopas/splito

[–] canopas_software 2 points 3 days ago

Thanks for your interest! 😊

We’re currently focusing on enhancing the Android version, but an iOS app is definitely on our roadmap. Stay tuned for updates—we want Splito to be accessible to everyone!

[–] canopas_software 1 points 4 days ago

You're absolutely right! I want to clarify that GroupTrack already has foundational security measures in place to ensure your data is protected from the start. For instance, all location data is encrypted and accessible only to authorized group members.

However, we're continuously working to enhance security with advanced features like End-to-End Encryption and Zero-Knowledge Architecture to make it even stronger.

1
submitted 4 days ago* (last edited 4 days ago) by canopas_software to c/flutter
 

Crafted with love and powered by Flutter, GroupTrack ensures your family stays connected and secure.

With a sleek design and solid architecture, GroupTrack keeps your loved ones close effortlessly — no matter the distance.

Features You'll Love:

  • Create & Join Spaces
  • Live Location Tracking & Sharing
  • Place Notifications & Real-Time Chat

Available now on Play Store! 👇

https://play.google.com/store/apps/details?id=com.canopas.yourspace

Upcoming Security Enhancements

We’re stepping up our game to prioritize your privacy with:

✔ Signal Protocol for secure data transmission

✔ AES-256 Client-Side Encryption

✔ Zero-Knowledge Architecture for utmost privacy

✔ Unique Encryption Keys per user and space

Let’s keep your loved ones close, connected, and safe! ❤️

We value your feedback and ideas to make it even better!

Explore the Project!! 👇

https://github.com/canopas/group-track-flutter

 

Thinking about leveling up your Vue.js app?

Switching to Nuxt.js could be the key to unlocking better performance and scalability!

We've been there migrating our website to Nuxt.js—and now we're sharing practical tips and insights to make your transition smooth and stress-free.

Why Nuxt.js?

  • Better SEO - Easily manage meta tags to boost your search rankings
  • Faster Loading - Experience improved speed with server-side rendering (SSR)
  • Simpler Development - Work more efficiently with an organized structure for smoother workflows

What You’ll Get in the Guide?

  • Step-by-step guide to migrating large Vue.js apps to Nuxt.js.
  • Tips for seamlessly adapting your codebase to Nuxt.js’s structure.
  • Solutions to tackle common migration challenges.
  • Best practices for a future-proof, scalable app.
  • If you’re a developer or part of a team aiming to improve your app’s performance, SEO, and overall user experience, this guide is for you.

Check Out the Full Guide!👇

https://canopas.com/how-to-migrate-large-applications-efficiently-from-vue-js-to-nuxt-js-bdd9e41f82a1

[–] canopas_software 1 points 1 week ago

You’re right, Go doesn’t have a built-in enum type like some other languages, but you can use iota to create a similar pattern for constants. It’s a bit of a workaround, but it works pretty well for many use cases where you'd typically use an enum in other languages.

[–] canopas_software 3 points 1 week ago

Currently, it doesn't support NAS Sync. We're adding more features to this app so stay with us for future updates.

 

Hey Flutter Devs!!

Say hello to Cloud Gallery—your new favorite way to manage photos and videos!

The open-source Flutter app offers seamless Google Drive and Dropbox integration, ensuring your memories stay safe, organized, and always within your reach.

Key Features 🌟

  • Sync Across Platforms with Automatic Backups
  • Effortless File Transfers and Organized Storage
  • Cross-Device and Cross-Platform Compatibility
  • Secure and User-Friendly Experience

Available now on both Android and iOS!

We’d love to hear your thoughts and ideas to improve Cloud Gallery!

Explore the Project!! https://github.com/canopas/cloud-gallery

8
submitted 1 week ago* (last edited 1 week ago) by canopas_software to c/css
 

Hey guys!

I’ve got something awesome for you—Tailwind Animations Examples, a brand-new collection of cool, ready-to-use animations built with Tailwind CSS.

🌟 Features

  • Complex animations made simple.
  • Copy & paste ready code.
  • Regularly updated with fresh animations.

🎯 Perfect for developers and designers who want to save time and create stunning UIs!

Check it out now!👇

https://github.com/canopas/tailwind-animations-examples

9
submitted 2 weeks ago* (last edited 2 weeks ago) by canopas_software to c/golang
 

Background

Imagine you’re building a Todo application using Go. Each task in your application has a status associated with it, indicating whether it’s “completed”, “archived” or “deleted”.

As a developer, you want to ensure that only valid status values are accepted when creating or updating tasks via your API endpoints. Additionally, you want to provide clear error messages to users if they attempt to set an invalid status apart from the valid ones.

Of course, you will say enums, right?

But the bad news is Go doesn’t provide enums and the good news is we can still implement it.

In this blog, we’ll explore how to effectively manage enums in Golang, including validation techniques to ensure data integrity and reliability.

Whether you are a beginner or an experienced developer, this guide aims to demystify enums and empower you to leverage their power in your Go projects.

What is Enum?

Enum is a short form of enumeration, which represents a distinct set of named constants. While languages like Java and C++ offer native support for enums, Go takes a different approach.

Instead of a dedicated enum type, Go developers use constants or custom types with iota to emulate enum-like behavior. Let’s begin!

Why Enums?

  • Enums make code more readable by providing descriptive names for values, rather than using raw integer or string constants. This enhances code clarity and makes it easier for other developers to understand and maintain the codebase.

  • Enums provide compile-time checking, which helps catch errors early in the development process. This prevents invalid or unexpected values from being assigned to variables, reducing the likelihood of runtime errors.

  • By restricting the possible values a variable can hold to a predefined set, enums help prevent logic errors caused by incorrect or unexpected values.

Defining Enums with Constants

Constants are a straightforward way to define enums in Go. Let’s consider a basic example where we define enum constants representing different days of the week.

package main

import "fmt"

const (
    SUNDAY    = "Sunday"
    MONDAY    = "Monday"
    TUESDAY   = "Tuesday"
    WEDNESDAY = "Wednesday"
    THURSDAY  = "Thursday"
    FRIDAY    = "Friday"
    SATURDAY  = "Saturday"
)

func main() {
    day := MONDAY
    fmt.Println("Today is ", day) // "Today is Monday"
} 

Simulating Enums with Custom Types and iota

While constants work well for simple enums, custom types with iota provide a more idiomatic approach in Go.

What is iota?

iota is a special identifier in Go that is used with const declarations to generate a sequence of related values automatically.

It simplifies the process of defining sequential values, particularly when defining enums or declaring sets of constants with incrementing values.

When iota is used in a const declaration, it starts with the value 0 and increments by 1 for each subsequent occurrence within the same const block. If iota appears in multiple const declarations within the same block, its value is reset to 0 for each new const block.

package main

import "fmt"

const (
    SUNDAY = iota // SUNDAY is assigned 0
    MONDAY        // MONDAY is assigned 1 (incremented from SUNDAY)
    TUESDAY       // TUESDAY is assigned 2 (incremented from MONDAY)
    WEDNESDAY     // WEDNESDAY is assigned 3 (incremented from TUESDAY) 
    THURSDAY      // THURSDAY is assigned 4 (incremented from WEDNESDAY)
    FRIDAY        // FRIDAY is assigned 5 (incremented from THURSDAY)
    SATURDAY      // SATURDAY is assigned 6 (incremented from FRIDAY)
)

func main() {
    fmt.Println(MONDAY, WEDNESDAY, FRIDAY) // Output: 1 3 5
}

Let’s rewrite the previous example using a custom type(int).

package main

import "fmt"

type Day int

const (
    Sunday Day = iota
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
)

func main() {
    day := Monday
    fmt.Println("Today is ", day) // Output: Today is 1
}

In this example, we define a custom-type Day and use iota to auto-increment the values of the constants. This approach is more concise and offers better type safety.

Optionally, we can also use like iota + 1 , if we want our constants to start from 1.

To read the full version, please visit Canopas Blog.

Feedback and suggestions are most welcome, add them in the comments section.

Follow Canopas to get updates on interesting articles!

Keep exploring and innovating!!

 

Introduction

Integrating Firebase Authentication into your SwiftUI app offers a secure and efficient way to manage user sign-ins.

With Firebase, you can authenticate users using various login methods, like Google, Apple, Email, phone number, and many more authentications.

We’ll walk you through setting up Firebase Authentication in a SwiftUI app, focusing on three key authentication providers: Google, Apple, and Phone number login.

We aim to simplify the setup and implementation process to help you build a secure, user-friendly app.

Our Open source project is also available on this GitHub Repository.

Firebase Project Setup

Implementing a secure and scalable phone login feature in your SwiftUI app using Firebase Authentication is within your grasp.

This guide also lays the foundation for integrating Google and Apple login, ensuring your app is ready for real-world scenarios.

Adopting a modular structure and MVVM architecture ensures maintainability and easy future expansions.

Eager to explore more?

To explore the step-by-step instructions, best practices, and details implementations, check out our full guide at Canopas Blog.

Happy coding!