Pagemail is a tool for saving and rembering links.
## Environment
PM_ENV
:dev
,stg
orprd
PM_LVL
:DEBUG
,INFO
orWARN
PM_TEST_USER
: user id to store session forPM_DB_PATH
: path to sqlite3 file
Home Page: https://pagemail.io
Can combine the base config into one file and then just override in the other ones using extends keyword
Need to disable request logging for static assets
The user has to refresh after adding a link before their page preview is rendered.
This is generally poor UX. It would be easier to just do the preview rendering synchronously, or can
add a callback delay to refresh when (if) the preview is found
So duplicates should just move the page to be the most recent (maybe alter the date created instead)
Looks like all pages are loaded immediately, on scroll does nothing atm
Separate service accessible on the pagemail network only
Can accept requests for following actions (stubbed):
Rolling own auth feels like a bad idea, lets get some proper management around the identifiers that
are being generated
SQLX is being used to manage all queries, while it has some advantages, SQLC is more suitable for
this use case of simple but lots of queries. Also will allow a declarative table structure which
will make implementing e2e tests a little easier.
We are now a little beyond the model that sqlite3 supports with a single db consumer - it's time to
consider how to migrate to postgres or something similar.
Pages:
There is an error connecting during the build step, so the image is run on the actions docker runner
PostPage is not respecting the content type header specified
Needs to be specifically email
Some of the structs in the app still have a log
field in them. This can now be deleted
the current session manager implementation was fine for now, but in fact a session store backed by
a database of kind (or at least a file...) needs to be implemented
handrolling is still an option (just a sqlite file in a docker volume is entirely doable) but it
might be easier to admit defeat and switch to gorilla sessions
The "subscribed" checkbox is not valid. Can rework the form so that each input update sends a request individually.
Since merging hack and slash (#58) there has been no mail coming out via SES.
Need to investigate and fix
Current iOS shortcut refers to the older /shortcut api, which is no longer available.
Needs to be re-pointed and deployed
When adding a page via dashboard, returns http405 method not allowed. Logged at 2024-05-08 22:07,
check container logs for info
Update the existing schema to add new tables:
Stores the pages text content extracted via readability service
Stores info for an articles reading (status, file location, progress and errors)
UI can present article text for users (and request caching can allow for offline capability down the line)
Should surface option to refresh an articles content (make sure to disallow spamming, keep requests to once per hour)
Track the progress of audio playback
There's a lot of work done on readability already. Can some of this be reused?
Now that we are using docker compose it'll be possible to host readability service in a separate
container and built it as a part of this project still. This allows using typescript anyways.
Form should be submitted and generate an email to me
Admin users should have access to grant access to readability
There should be a view on the accounts page to unlink id providers
Shortcut token does not seem to be recognised at the /pages/shortcut endpoint, probably because the wrong auth middleware is attached
There are extremely few tests which makes debugging quite hard.
Need to identify some of the key API routes which are suitable for testing and implement tests
Can use net/http/httpmock for full end to end testing done locally.
Need a tool for mocking the DB
With contact info
Page title is not dropping hyphen in wrapper logic
new gen ai voices are only available in us-east-1
need a terraform deployment in that region as well as polly access for the ec2 instance in that region.
The pagemail solution must be able to presign links for that region as well, so the session will have to be either cross region or have two
shortcut tokens should be hashed not just passwords, as this is another piece of access-granting info
Need to figure out how to implement the sign in with google from the previous site into this one
/login/google
endpoint to handle the requesttry to figure out if the sqlc driver supports having multiple query files all contribute to
the same pakage.
Also, is it better to just have the db connection stored in (*Router).Conn
and instantiate
dbqueries.New
as and when it is needed?
For having shortcuts on multiple devices
Articles page is the hub for readability articles:
Playback page for an article should start playing the audio of a reading which has already been generated
Alter the existing changes such that we are checking if env != production rather than env===production, so we will use the correct one by default and can debug the issue in stage
There's an action for it just put it in parallel with the deploy to prod call in the push tag workflow
Resources in AWS are currently hand deployed. We can move them into terraform very easily as AWS
auth is already done in github actions. Consider looking at atlantis
for PR based deployments.
Synth endpoint needs connection to AWS via node aws sdk to polly.
Job endpoint should be able to lookup job status, error message and S3 location.
OR
Firebase ID token has incorrect "aud" (audience) claim. Expected "pagemail-2bc26" but got "pagemail-preprod". Make sure the ID token comes from the same Firebase project as the service account used to authenticate this SDK. See https://firebase.google.com/docs/auth/admin/verify-id-tokens for details on how to retrieve an ID token.
Users need to be able to search for their pages (duh) on the dashboard
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.