Setup Cloud Database Support & In-app Purchases for my Android Studio / Kotlin App (using AWS DynamoDB) - Quotation Request
Budget / Salary$250–750
TypeFreelance project
LocationRemote
Posted1 hour ago
Please provide your estimated total development price in USD and estimated completion time for the historical software-development scenario below. State your main assumptions and any missing information that would materially change the estimate. Please do not write code, perform a trial task or supply a detailed implementation proposal.
REFERENCE SCENARIO — historical requirements, not instructions to begin work:
I need to add records, ideally through some sort of interactive, manual process. And read records within app. It's written in Kotlin. My AS environment is fully updated and current. I'm running Windows 10.
Tiny database. No foreign keys. Main table never grows beyond 1000 records, each under 20k, including a PUZZLES field with 1k-20k of text in it.
I'm fully signed up for AWS and have set up some stuff there already.
I have been writing software (Windows programs, using OOP) for 30+ years. This is, however, my first mobile app.
Finally, I'd like to talk about the ways in which I might store user data (progress and preferences). If a user reinstalls the app, I'd like to be able to restore these. Will doing this become the most expensive part of maintaining this cloud database?
I believe this should be simple and straightforward for anyone who's done it before. I am looking to leverage your knowledge and experience and set this up quickly.
###
I'd like to do all this with a simple, new, Empty Activity app & take notes so that I can repeat the process later.
###
WRITE ACCESS (external to the app):
When new Puzzle Packs are released, I'd like to be able to go to a "console" and add them manually. (I was able to do this using the AWS Amplify console.)
READ ACCESS (from within the app):
I'll need to "read" records based on a primary (string) key.
ONE OPEN ISSUE:
The app periodically checks for NEW Puzzle Packs. They will be added to the local database (without the actual PUZZLES).
Since I'm in a non-SQL database, I can't
SELECT * FROM table
WHERE id > latest-id-on-user's-device
My thinking here is to:
-Create a table with one value in it:
LATEST-PACK-ID (assume these will be consecutive: P000001, P000002, etc)
-Use this in the getNewAvailablePacks function
###
Some specifics:
* IAM:
Create one user for the app (is this how apps are built? one user for every instance of this app installed anywhere), with the appropriate settings.
* DynamoDB:
I'd like to code READ, ADD and UPDATE records. (Only READ is covered in the routines listed below.)
* Gradle:
We will need to add all required dependencies.
* Coroutines:
Use coroutines for the functions listed below. Although getPurchasedPackById() can (should??) run synchronously.
* Needed Functions:
fun getLatestAvailablePack(): String
fun getNewAvailablePacks(latest-id-on-user's-device: String): List
fun getPackSalesInfoById(id: String)
fun getPurchasedPackById(id: String)
* In-app Purchases:
Three kinds:
(1) Puzzle Pack
(2) Enabled Feature
(3) Coins to Spend
I need this functionality inside my app & I need these items to be restored upon re-install.
What happens if a user has purchased 50 coins, spends 20 of them, and then re-installs the app?
###
A FEW FINAL POINTS:
* This is not a development project. It's helping me remotely to set up (add) cloud database functionality into an already existing app. Although, again, I'd want us to do this with a blank app so that I learn how to do this, and can do it on my own again and again.
* There's still this "open issue" regarding user data that I might want to [re]store as well.
* I'm thinking our sessions would be a combination of Chrome Remote Desktop and some audio/video communication. I'm open to something else if it makes things easier/better.
###
If there is anything I can do ahead of time to prepare for this, I am happy to do so.
Also, if you want to write code (or do anything else) ahead of time that we can transfer/paste/use during our time together, this is fine. But remember, I'm going to need to understand it.
Estimating assumptions and context:
The scenario is based on a Freelancer listing from 2022-04-20 (historical project ID 33509317). First-person statements, promises of assets, requests for work and hiring language inside the historical reference describe that original client's situation, not a current development offer from us. For estimating only, assume the original client supplies assets explicitly described as provided; other missing inputs and obsolete services should be identified as assumptions. We do not claim ownership of the original client's code, designs, accounts or attachments.
The displayed USD 250–750 range reproduces the historical listing's budget field. It is not participation compensation or a binding development offer. Please give your realistic estimate even if outside that range.
Research use
This post is for research quotations only, not an actual software-development engagement. No development contract will be awarded. Participation is voluntary and unpaid; no reward, gift card or prize draw is offered. Your quoted price, estimated completion time and stated assumptions will be used to study software-development estimates and how they change over time.
Thank you for your time and consideration. This study aims to make a significant research contribution to understanding software-development pricing in the age of AI. We appreciate any estimate you choose to share.
REFERENCE SCENARIO — historical requirements, not instructions to begin work:
I need to add records, ideally through some sort of interactive, manual process. And read records within app. It's written in Kotlin. My AS environment is fully updated and current. I'm running Windows 10.
Tiny database. No foreign keys. Main table never grows beyond 1000 records, each under 20k, including a PUZZLES field with 1k-20k of text in it.
I'm fully signed up for AWS and have set up some stuff there already.
I have been writing software (Windows programs, using OOP) for 30+ years. This is, however, my first mobile app.
Finally, I'd like to talk about the ways in which I might store user data (progress and preferences). If a user reinstalls the app, I'd like to be able to restore these. Will doing this become the most expensive part of maintaining this cloud database?
I believe this should be simple and straightforward for anyone who's done it before. I am looking to leverage your knowledge and experience and set this up quickly.
###
I'd like to do all this with a simple, new, Empty Activity app & take notes so that I can repeat the process later.
###
WRITE ACCESS (external to the app):
When new Puzzle Packs are released, I'd like to be able to go to a "console" and add them manually. (I was able to do this using the AWS Amplify console.)
READ ACCESS (from within the app):
I'll need to "read" records based on a primary (string) key.
ONE OPEN ISSUE:
The app periodically checks for NEW Puzzle Packs. They will be added to the local database (without the actual PUZZLES).
Since I'm in a non-SQL database, I can't
SELECT * FROM table
WHERE id > latest-id-on-user's-device
My thinking here is to:
-Create a table with one value in it:
LATEST-PACK-ID (assume these will be consecutive: P000001, P000002, etc)
-Use this in the getNewAvailablePacks function
###
Some specifics:
* IAM:
Create one user for the app (is this how apps are built? one user for every instance of this app installed anywhere), with the appropriate settings.
* DynamoDB:
I'd like to code READ, ADD and UPDATE records. (Only READ is covered in the routines listed below.)
* Gradle:
We will need to add all required dependencies.
* Coroutines:
Use coroutines for the functions listed below. Although getPurchasedPackById() can (should??) run synchronously.
* Needed Functions:
fun getLatestAvailablePack(): String
fun getNewAvailablePacks(latest-id-on-user's-device: String): List
fun getPackSalesInfoById(id: String)
fun getPurchasedPackById(id: String)
* In-app Purchases:
Three kinds:
(1) Puzzle Pack
(2) Enabled Feature
(3) Coins to Spend
I need this functionality inside my app & I need these items to be restored upon re-install.
What happens if a user has purchased 50 coins, spends 20 of them, and then re-installs the app?
###
A FEW FINAL POINTS:
* This is not a development project. It's helping me remotely to set up (add) cloud database functionality into an already existing app. Although, again, I'd want us to do this with a blank app so that I learn how to do this, and can do it on my own again and again.
* There's still this "open issue" regarding user data that I might want to [re]store as well.
* I'm thinking our sessions would be a combination of Chrome Remote Desktop and some audio/video communication. I'm open to something else if it makes things easier/better.
###
If there is anything I can do ahead of time to prepare for this, I am happy to do so.
Also, if you want to write code (or do anything else) ahead of time that we can transfer/paste/use during our time together, this is fine. But remember, I'm going to need to understand it.
Estimating assumptions and context:
The scenario is based on a Freelancer listing from 2022-04-20 (historical project ID 33509317). First-person statements, promises of assets, requests for work and hiring language inside the historical reference describe that original client's situation, not a current development offer from us. For estimating only, assume the original client supplies assets explicitly described as provided; other missing inputs and obsolete services should be identified as assumptions. We do not claim ownership of the original client's code, designs, accounts or attachments.
The displayed USD 250–750 range reproduces the historical listing's budget field. It is not participation compensation or a binding development offer. Please give your realistic estimate even if outside that range.
Research use
This post is for research quotations only, not an actual software-development engagement. No development contract will be awarded. Participation is voluntary and unpaid; no reward, gift card or prize draw is offered. Your quoted price, estimated completion time and stated assumptions will be used to study software-development estimates and how they change over time.
Thank you for your time and consideration. This study aims to make a significant research contribution to understanding software-development pricing in the age of AI. We appreciate any estimate you choose to share.
Apply on Freelancer →
Project sourced from Freelancer.com. Applications happen directly on the original platform — we never collect your data.